Обрабатывать столкновения в отдельном классе

В настоящее время я пишу код для Ludum Dare, мне нужно иметь возможность обрабатывать столкновения сверху вниз. Я знаю, как обращаться с ними нормально, но я собираюсь включить много вещей, с которыми можно столкнуться, поэтому я хотел бы обрабатывать столкновения из возврата bool в отдельном классе. То, как я это сделаю, это даст функции входной прямоугольник для окна столкновения игрока, а затем сохранит все столкновения в функции. Однако, если я сделаю это таким образом, мне придется каждый раз проверять, двигаюсь ли я во что-то. Есть лучший способ сделать это?

0

Решение

Прежде всего, особенно если вы создаете игру для Ludum Dare, нет ничего плохого в том, чтобы наивно проверять столкновения (перебирая все объекты и спрашивая «Я сталкиваюсь с этим?»), Потому что ваша игра, вероятно, будет маленькой и у вас будет много мощность процессора, чтобы сэкономить.

С учетом сказанного это крайне неэффективно. Есть два способа улучшить это, и они часто реализуются вместе:

  1. Следует использовать квад-деревья или какую-либо другую форму оптимизации столкновений. Это рекурсивно разделяет игровой мир на квадранты, каждый с определенным количеством сущностей внутри каждого квадранта. Это означает, что ваш персонаж проверяет столкновение только с небольшим количеством объектов, а не со всеми.
  2. Вам действительно нужна система событий. Судя по вашему вопросу, вы новичок в разработке игр. Это совершенно нормально, но итерации по каждой сущности — это просто большая трата вычислительной мощности. С системой событий (вы можете узнать о них где угодно в Интернете, и они были реализованы бесчисленное количество раз в SFML), игра «уведомляется», когда происходит столкновение, а не «ждет его».

Опять же, обе техники продвинуты, но это связано с территорией в удивительно веселом и суровом мире разработки игр. Godspeed.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector