Как мне визуализировать и обнаружить линию обзора? - PullRequest
2 голосов
/ 23 апреля 2010

Если вы посмотрите в верхнем правом углу, вы увидите на радаре линию прямой видимости вражеского подразделения.

Мне было интересно, какой самый эффективный или самый простой способ (небольшой код, довольно точный. Не должен быть идеальным), чтобы обнаружить, находится ли что-то в вашем поле зрения? Мне может понадобиться, а может и не понадобиться (я, вероятно, не буду).

Я не знаю формулу и не использовал математические библиотеки / пространства имен в C #

-edit-

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

Так что мне действительно нужен источник (враг), dst (игрок) и учет стен, блокирующих зрение.

альтернативный текст http://image.com.com/gamespot/images/screenshots/gs/action/metalgearsolid/metalgearsolid_790screen001.jpg

-edit- в итоге я использовал прямоугольник. Это было достаточно хорошо, и я смог поработать над другим в прототипе , а затем написать код Raycast.

1 Ответ

3 голосов
/ 23 апреля 2010

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

...