|
|
Line 53: |
Line 53: |
| [[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]] | | [[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]] |
| [[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]] | | [[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]] |
− |
| |
− | You can combine with intersect command to find selection names on intersected objects (in this example priority is geom >> ifire >> fire >> view):
| |
− |
| |
− | <nowiki>arrow = "Sign_Arrow_F" createVehicle [0,0,0];
| |
− | testFunc = {
| |
− | _ins = lineIntersectsSurfaces [
| |
− | ATLToASL positionCameraToWorld [0,0,0],
| |
− | ATLToASL positionCameraToWorld [0,0,1000],
| |
− | player
| |
− | ];
| |
− | if (count _ins == 0) exitWith {
| |
− | arrow setPosASL [0,0,0]
| |
− | };
| |
− | arrow setPosASL (_ins select 0 select 0);
| |
− | arrow setVectorUp (_ins select 0 select 1);
| |
− | _intDist = (_ins select 0 select 0) distance (ATLToASL positionCameraToWorld [0,0,0]);
| |
− | _sel = "";
| |
− | _dist = 10000;
| |
− | {
| |
− | _ins2 = [_ins select 0 select 3,_x] intersect [
| |
− | positionCameraToWorld [0,0,0],
| |
− | positionCameraToWorld [0,0,_intDist + 0.1]
| |
− | ];
| |
− |
| |
− | {
| |
− | if (_x select 1 < _dist) then {
| |
− | _dist = _x select 1;
| |
− | _sel = _x select 0
| |
− | };
| |
− | } forEach _ins2;
| |
− | if (_sel != "") exitWith {};
| |
− | } forEach ["GEOM","IFIRE","FIRE","VIEW"];
| |
− |
| |
− | hintsilent format ["nearest selection: %1",_sel];
| |
− | };
| |
− | ["sample_id","onEachFrame","testFunc"] call BIS_fnc_addStackedEventHandler;
| |