Как уже отмечалось выше, для навигации необходимо, чтобы анимат обладал способностью воспринимать информацию об участках свободного пространства. Если в игре не используется упрощенный подход, при котором информация об окружающем пространстве подготавливается и передается анимату перед запуском собственно игрового процесса, анимат может получить такую информацию одним из двух следующих способов.
> с помощью функций запроса контента точки (point content), которые могут возвращать сведения о типе материала в точке с заданными координатами. Такие функции могут возвращать значение, говорящее, например, о том, что в заданной точке находится пустое пространство, монолитный объект, жидкость и т.п.
> С помощью функций отсложиваиия лучей (line trace), которые могут использоваться для выявления первого пересечения заданного сегмента со структурой игрового мира. Такой упрощенный подход позволяет идентифицировать области свободного пространства.
Получив с помощью одного из этих способов необходимую информацию, анимат уже может принять решение, куда двигаться дальше. При этом для упрощения задачи принятия решения он может использовать дополнительные запросы на получение информации об окружающей среде (например, "прощупать" путь впереди, основываясь на предварительно выбранном направлении движения). С другой стороны, в каких-то случаях можно использовать более простые типы сенсоров или же комбинировать перечисленные выше сенсоры с простыми, в частности, к простым сенсорам относятся сенсоры следующих типов.
> Детекторы столкновений. Позволяют выявить ситуации, при которых анимат должен столкнуться с препятствием любого типа (стены, лестницы или другие персонажи).
> Одометры (odometer). Могут использоваться для определения пройденного расстояния относительно текущего состояния.
> Датчики поворотов (proprio-sensor). Позволяют отслеживать относительные угловые перемещения анимата вокруг своей оси.
Например, с помощью методов запроса контента точки и (или) отслеживания лучей можно, не прибегая к перемещениям, собрать достаточно полную информацию об окружающей среде, тогда как при использовании детекторов столкновений (рис. 8.3) придется провести обучение анимата. Естественно, передвижение по площадке с целью обучения методом проб и ошибок выглядит значительно менее реалистично, чем целенаправленное перемещение анимата, уже обладающего какой-то информацией. Как легко заметить, снижение реалистичности вызвано недостатком, присущим самому методу использования детекторов столкновений: они очень часто позволяют выявить препятствие лишь в тот момент, когда избежать столкновения уже нельзя.