lineOfSight
lineOfSight
> Функции
Проверяет прямую видимость между начальной ячейкой и конечной ячейкой, игнорируя объекты в массиве entityToIgnore.
Пример: if (lineOfSight(getCell(), getCell(enemy))
Алгоритм описывается следующим образом:
- Нарисуйте отрезок между центрами двух тестируемых ячеек.
- Перечислите клетки, пересекаемые этим отрезком. Ячейка не считается перечеркнутой, если сегмент касается ее края или игнорируется.
- Если только одна из этих перечеркнутых ячеек является препятствием или содержит сущность, линия обзора блокируется, в противном случае она свободна.
Настройки
- старт: начальная ячейка.
- конец: целевая ячейка.
- entityToIgnore (необязательно): Объект для игнорирования или массив объектов для игнорирования, по умолчанию ваш объект игнорируется.
Обратная связь
- потерял: (логическое значение)
true, если линия прямой видимости свободна;
false в противном случае.
Демонстрация
Нажмите на ячейку, чтобы отобразить все ячейки, находящиеся в прямой видимости с ней.