OpenGL Обнаружение обрывов местности - PullRequest
2 голосов
/ 03 декабря 2011

Хорошо, у меня есть процедурно сгенерированный ландшафт (основанный на http://www.swiftless.com/terraintuts.html)

У меня есть чайник "Самолет", в котором вы можете летать (камера от третьего лица)

По сути, цель - пролететь через долины и т. Д., Не разбившись.

Что я не могу понять, так это как рассчитать, столкнулись ли вы с местностью или нет?

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

Карту местности особенно легко проверить на столкновение, поскольку карта местности - это карта от 2d точки (x, y) до высоты местности, TERRAIN [x, y] в этой точке.Учитывая вашу плоскость чайника в (t_x, t_y, t_z), просто проверьте его высоту в сравнении с высотой местности в (t_x, t_y).То есть, если t_z

0 голосов
/ 03 декабря 2011

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

Для этого у меня каждый класс (например, ракета, монстр, игрок, дерево и т. Д.) Подкласс класса Entity, который содержит логику для случаев столкновения, что означает, что при запуске ракеты он может убить монстра, но только сжечь дерево (при условии, что у меня есть объекты ракеты и дерева).

Хорошая книга, которой я следую, которая объясняет многое из этого более подробно:

http://www.amazon.co.uk/Beginning-OpenGL-Game-Programming-Second/dp/159863528X/ref=dp_ob_title_bk

...