機能しないファンクション
ターゲットを見つけたらブール値を返すはずのファンクションがエラーを出す。
BIS_fnc_enemyDetected
/* Author: Jiri Wainar Description: Return true if unit knows about nearby enemy unit or driven vehicle. Parameter(s): _this: unit that is inspected Returns: _knowsAboutEnemy:bool Example: _knowsAboutEnemy:bool = _unit call BIS_fnc_enemyDetected; _knowsAboutEnemy:bool = [_unit(,_distance)] call BIS_fnc_enemyDetected; */ private _unit = _this param [0,objNull,[objNull]]; private _distance = _this param [1,300,[123]]; private _detected = false; private _targets = _unit targetsQuery [objNull, sideUnknown, "", [], 0]; private _enemySides = _unit call BIS_fnc_enemySides; if (_distance == -1) then { {if ((_x select 2) in _enemySides) exitWith {_detected = true}} forEach _targets; } else { {if ((_x select 2) in _enemySides && {_unit distance (_x select 4) < _distance}) exitWith {_detected = true}} forEach _targets; }; _detected
この最後のローカル変数"_detected"がエラーを起こしている。
そこで新しいコードを作ろうと思うが気になる機能がある。
private _targets = _unit targetsQuery [objNull, sideUnknown, "", [], 0];
targetsQuery について
_unit が sideUnknownで把握済みのターゲットを_targetに返す
ターゲットをフィルタリングする時の配列
[targetIgnore, targetSide, targetType, targetPosition, targetMaxAge]
左から
結果から除外するターゲットオブジェクト - すべての目標にはobjNull
ターゲットにするサイド - 任意のサイド sideUnknown
ターゲットにするオブジェクト -すべてのオブジェクト ""
ターゲットの位置([x,y]のみ考慮)許容差200m []-任意の位置
ターゲットの最大年齢(?) ここが詳細不明 - すべて0
つまり上のtargetsQueryは
除外オブジェクトなし、任意のサイド、すべてのオブジェクト、任意の位置、全年齢
を条件にしている。
返す値について
[accuracy, target, targetSide, targetType, targetPosition, targetAge]
左から
ターゲットの条件合致度 0~1の間 上のフィルタリング条件にどれだけ合致しているかを見る
ターゲットオブジェクト
ターゲットサイド
ターゲット種類 typeOfで返す合致なしは""で返す
ターゲット位置 [x,y]で返す
ターゲット年齢 数値 秒単位で返す(負の値も可能)
ということである。