Лучшие методы для обнаружения столкновений в видеоиграх? - PullRequest
2 голосов
/ 07 марта 2012

Я провел много исследований по этой теме, но на самом деле не нашел точных ответов, которые ищу, возможно, не существует единственного идеального решения ... Мне было интересно, как выполнить 3D-обнаружение столкновений в видеоигры.

Лучше ли использовать объемы столкновений, такие как сферы и прямоугольники, и проверять наличие пересечений, или существует еще более простой метод, например, просто сравнивать положения и векторы объектов, чтобы узнать, пересекаются ли они?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Это неопределенный вопрос. Все зависит от того, ЧТО вы на самом деле делаете. если это поле, вы проверяете наличие столкновений между сторонами относительно центра. Если подумать, вы делаете то же самое со Сферой (радиусом).

Стоит также отметить, что столкновение - это легкая часть, это то, что вы хотите, чтобы объекты делали после того, как они сталкиваются, это сложная часть, а также, когда формы вступают в игру больше. Т.е. сфера и столкновение квадратов будут действовать по-разному по отношению к сфере и сфере.

Хороший способ - бороться со столкновением на одной оси, а затем перейти на другую. Не мешай себе.

Стоит прочитать: http://www.gamedev.net/page/resources/_/technical/game-programming/general-collision-detection-for-games-using-ell-r1026

После этого стоит купить книгу по общему программированию игр и проработать ее, и тогда вы сможете увидеть, как лучше всего поступать.

Надеюсь, это поможет

0 голосов
/ 28 мая 2016

Это не обязательно самый быстрый ответ, но один алгоритм полного доказательства состоит в том, чтобы иметь две области, представленные многомерной функцией (из xyz), которая возвращает 1, если она находится в области, и 0 в противном случае, умножьте их вместе, а затем посмотрите, если интегралвсего пространства не равно нулю.

Если столкновение является точечным, просто используйте значение функции, основанное на истине и ложи.

Это будет работать 100% времени, пока вы можетевычислить интеграл ...

Другой вариант, который я бы использовал, - это просто расширить края области функций так, чтобы требовалось только обнаружение точек.Приготовьтесь к огромной нагрузке штучных функций.

...