Есть три фазы обнаружения столкновений.
Broadphase : он проходит между всеми объектами, которые могут взаимодействовать, допускаются ложные срабатывания, если это ускорит цикл.
Узкая фаза : определяет, сталкиваются ли они, а иногда, как нет, ложных срабатываний
Разрешение : Разрешает столкновение.
Я задаю вопрос об узкой фазе. Существует несколько алгоритмов, различающихся по сложности и точности.
Пересечение Hitbox : это a-posteriori алгоритм, который имеет наименьшую сложность, но также не слишком точен,
Пересечение цвета : пересечение Hitbox для каждого пикселя, a-posteriori, идеально для пикселя, не точное с точки зрения времени, более высокая сложность
Теорема о разделяющей оси : используется чаще, точнее для треугольников, однако, a-posteriori, так как не может найти границу, при учете последнего кадра она более устойчива
Линейное лучевое вещание : априорный алгоритм, полезный для физики полуреалистичного вида, находит точку пересечения, даже более точную, чем SAT, но с большей сложностью
Сплайн-интерполяция : A-priori, даже более точная, чем линейные лучи, еще большая коплетность.
Наверное, я еще много чего забыл. Вопрос в том, когда лучше использовать SAT, когда лучи, когда сплайны, и есть ли что-нибудь лучше.
Это действительно зависит от типа вашей игры. У каждого метода выше есть свои собственные компромиссы.
Тем не менее, SAT является довольно стандартным в моем опыте для общих библиотек физики, напр. Box2D использует его широко (Angry Birds и многие другие игры используют Box2D).
Вариации цветового пересечения, смешанные с пересечением SAT или Hitbox, используются в играх, таких как Sonic, Megaman с хорошими результатами.
Я не знаю много о № 4 и № 5, хотя.
источник