Скрипт для обнаружения целей в Unity
Основные возможности
- Поле зрения (Field of View) Угол обзора, определяющий сектор поиска целей.
- Зона тревоги (Alert Zone) Радиус обнаружения по близости вне зависимости от угла.
- Разница по высоте (Height Difference) Учитывает вертикальную разницу между сканером и целью.
- Проверка препятствий (View Obstacle) Блокирует обнаружение, если между сканером и целью есть коллайдеры.
- Поиск ближайшей цели (Nearest Target) Автоматический выбор ближайшего «видимого» объекта.
Достоинства и недостатки
Достоинства
- Простая интеграция. Добавьте компонент TargetScanner на любой GameObject и настройте параметры в инспекторе.
- Гибкие настройки. Угол обзора, радиус тревоги, разница по высоте и слои препятствий настраиваются «из коробки».
- Визуализация через Gizmos. Позволяет отлаживать зону обзора и лучи прямо в сцене Unity
- Лёгковесность. Минимум зависимостей, подходит для 2D и 3D проектов.
- Получение списка и ближайшей цели. Методы GetTargetList() и GetNearestTarget() облегчают логику ИИ.
Недостатки
- Отсутствие событий/колбэков. Скрипт не уведомляет автоматически о появлении/исчезновении цели.
- Сканирование каждый кадр. Без дополнительной оптимизации может нагружать CPU в больших сценах.
- Ограниченный функционал фильтрации. Нет встроенного разделения по типам целей, кроме проверки тегов.
- Нет асинхронной обработки. Все проверки выполняются синхронно в методе Update().
- Отсутствие поддержки слоёв целей. Фильтрация производится только по тегам, без гибкого слоя масок.
2 комментария