• Страница 1 из 1
  • 1
Проверка поля зрения юнита
Kurt
Воскресенье, 19.06.2016, 00:02
Пост №: 1
Уже давно писал эту функцию и не думаю, что для неё найдется применение. Однако всё же вещь интересная и может быть кому-то понадобиться.

Функция проверяет находится ли данный юнит в поле зрения (FOV) другого юнита, в арме оно равено 90 градусов.
Для игрока это его экран

Также может работать с маленькими объектами




Код
Kurt_fnc_isInFOV =
{
    /*
       Author: Kurt
       Description:
              checks if the given unit can see another unit
       Parameter(s):
              0: OBJECT - the main character of this book
              1: OBJECT - the unit, we try to see
       Returns:
              BOOL
*/
       params["_unit", "_target"];
       private ["_return", "_vis", "_uia"];
       _ vis = lineIntersects [eyePos _unit, eyePos _target, _unit, _target];
       if(_vis) exitWith { false };
       _uia = [getpos _unit, getdir _unit, 90, getpos _target] call BIS_fnc_inAngleSector;
       if(_uia) exitWith { true };
       false;
};

Пример:
Код
_s = [player, BILL] call Kurt_fnc_isInFOV;
if(_s) then {
       hintSilent "I see you, Bill!";
};

Для "промышленного" использования советую проверять функцию onEachFrame
Сообщение отредактировал Kurt212 - Воскресенье, 19.06.2016, 00:22

Автор темы
 
  • Страница 1 из 1
  • 1
Поиск: