Yurich » 14.09.2003 (Вс) 0:20
Это называют проверкой столкновений.
Я представляю себе 2 способа, оба имеют недостатки:
1. Я его не применял. По мере движения проверять каждый фрейм (Face) на соответствие координат вершин с текущими координатами движущегося объекта (камеры). Недостаток - чем больше вершин в сцене, тем медленнее.
2. Что я и делал. Предварительно создать массив, описывающий отдельные прямоугольные сегменты с возможными координатами перемещения камеры (то бишь карту возможных перемещений). Каждый элемент массива содержит инфу: в какие сегменты из него можно беспрепятственно пройти и границы сегмента (min.x, max.x, min.z, max.z; min.y или max.y определяют текущую высоту камеры). У меня этот способ работает прекрасно. Камера, как и положено, упирается в заборы, стены, ходит по ступенькам и лестницам, крышам зданий и т.п. Достоинство - полное отсутствие математики при проверке границ сегмента, след. - высокая скорость. Недостаток - невозможность движения вдоль стен, находящихся под углами не кратными 90' относительно осей координат. Хотя если чуть пренебречь скоростью работы, и этот вопрос можно решить.