Я делаю симуляцию и в настоящее время добавляю к ней препятствия. Теперь цель препятствий состоит в том, чтобы другие агенты могли прятаться за ними, где другие не могут их видеть. Однако я пытаюсь выяснить, как лучше всего проверить, если агент в поле зрения находится за препятствием и поэтому не может быть виден. Вот пример:
Агент в черном не должен видеть агента в красном цвете, но должен видеть агента в желтом цвете (зеленые линии указывают поле зрения агента в черном цвете).
На данный момент мое поле зрения вычисляет только угол, под которым находятся агенты, и проверяет, находится ли этот угол в пределах поля зрения. Я смотрел на некоторые решения, которые используют разработчики игр, и читал о raycasting, однако кажется, что это очень сложно с точки зрения вычислений и не является хорошим решением для меня, поскольку у меня будут сотни агентов, отбрасывающих лучи.
Еще одна вещь, о которой я подумал, это проверка углов, которые занимает препятствие (например, от 90 до 120 градусов) обзора, и если агент находится в том же диапазоне углов, это означает, что он заблокирован препятствием (если это имеет смысл) .
Я публикую здесь, чтобы спросить, может ли кто-нибудь указать мне простое, но эффективное решение для этого, поскольку я очень новичок в таких вещах, связанных с разработкой игр.
Заранее спасибо!