Уже давно писал эту функцию и не думаю, что для неё найдется применение. Однако всё же вещь интересная и может быть кому-то понадобиться.
Функция проверяет находится ли данный юнит в поле зрения (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