прямая видимость 2d - PullRequest
       17

прямая видимость 2d

2 голосов
/ 31 марта 2011

Кто-нибудь может объяснить, как работает прямая видимость в 2d? Который действительно поможет в моих двухмерных экспериментах. Эксперимент, над которым я работаю, представляет собой простое двумерное моделирование. Игрок перемещается по миру из одного места в другое, мой мир в точности выглядит так . Я успешно передвигал персонажа из одной точки в другую (от A до G), моя цель - когда персонаж проходит каждую точку, он должен выполнить некоторый поиск в этой области, прежде чем уйти в следующую точку. Чтобы я чувствовал, что путь - лучшее решение, кто-нибудь может мне помочь в этом. Спасибо!

Редактировать: Как только игрок войдет в комнату / контрольно-пропускной пункт, я выведу пользователя на следующую сцену , как это
enter image description here

, где пикапы располагаются где-то на холсте, и мой игрок должен собрать их все и покинуть область - сцена «Назад к карте».

Ответы [ 2 ]

7 голосов
/ 31 марта 2011

Я не понял ваш абзац, но чтобы ответить на ваш вопрос (при условии, что мы хотим узнать, может ли противник увидеть игрока в нисходящей игре)

  1. Проверьте, что игрок находится в конусе обзора противника. Мы делаем это, вычисляя (абсолютное значение) угол между вектор прицела противника и вектор , охватывающий противника и игрока . Если это 0 °, враг стоит перед игроком. Если это 180 °, враг смотрит в сторону от игрока. Убедитесь, что это <30 °, скажем, чтобы дать противнику угол обзора 60 ° (или <45 °, чтобы дать противнику угол обзора 90 °). </p>

  2. Убедитесь, что между противником и игроком нет ничего. Это сводится к проверке на столкновения между стенами (или чем-то еще) и отрезком линии охватывая противника и игрока.

    Обратите внимание, что при наличии множества стен проверка на столкновение со всеми из них может быть очень дорогой. Сужение поиска до нескольких объектов называется сокращением и выходит за рамки этого ответа (см. здесь для получения дополнительной информации)

1 голос
/ 31 марта 2011

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

Чтобы сделать это, вы должны получить список всех потенциальных объектов на этом пути (для этого может пригодиться QuadTree, http://en.wikipedia.org/wiki/Quadtree)) и проверить каждый из них, чтобы убедиться, что они пересекают линию между глазом. и объект.

Возможно, вы захотите исследовать поиск путей: http://en.wikipedia.org/wiki/Pathfinding

...