Script - angle.sqf

Z Armed Assault nápověda

Přejít na: navigace, hledání

Jednoduchá funkce, která slouží ke zjištění úhlu mezi dvěma objekty. Vhodné například pro zjistění, jestli je nějaký voják natočený směrem k druhému vojákovi.

Použití

uhel = [vojak1,player] call compile loadFile "sqf\angle.sqf"

Vrácená hodnota bude úhel mezi hráčem a vojákem s názvem vojak1. Pokud by byl 0, znamenalo by to, že hráč je otočený směrem k vojákovi.

Script

_one = _this select 0;
_two = _this select 1;

_distancex = (position _two select 0) - (position _one select 0);
_distancey = (position _two select 1) - (position _one select 1);
_absgoniometry = abs(_distancex) + abs(_distancey);
_asinderived = _distancex / _absgoniometry;
_acosderived = _distancey / _absgoniometry;
_angle = 0;
if (_asinderived >= 0 && _acosderived >= 0) then {_angle = asin(_asinderived)};
if (_asinderived >= 0 && _acosderived < 0) then {_angle = 180 - asin(_asinderived)};
if (_asinderived < 0 && _acosderived < 0) then {_angle = 180 + abs(Asin(_asinderived))};
if (_asinderived < 0 && _acosderived >= 0) then {_angle = 360 - abs(Asin(_asinderived))};
abs(direction _one - _angle);
Osobní nástroje