nearestObjects: Difference between revisions
Jump to navigation
Jump to search
(values of 4th argument were mixed up) |
Killzone Kid (talk | contribs) |
||
Line 35: | Line 35: | ||
|p3= types: [[Array]] - list of class name of the objects to search for. |=Parameter 3 | |p3= types: [[Array]] - list of class name of the objects to search for. |=Parameter 3 | ||
|p4= radius: [[Number]] - range from center position to search for objects. |=Parameter 4 | |p4= radius: [[Number]] - range from center position to search for objects. |=Parameter 4 | ||
|p5= 3Dmode (Optional): [[Boolean]] - The object search and sorting mode: [[ | |p5= 3Dmode (Optional): [[Boolean]] - The object search and sorting mode: [[true]] - 3D, [[false]] - 2D. Default: [[true]] - 3D (''Available since Arma 3 v1.65.138818'') |=Parameter 5 | ||
| [[Array]] - array of objects sorted according to [[distance2D]] |= Return value | | [[Array]] - array of objects sorted according to [[distance2D]] |= Return value |
Revision as of 23:56, 25 April 2017
Description
- Description:
- Returns a list of nearest objects of the given types to the given position or object, within the specified distance. If more than one object is found they will be ordered according to distance2D to the object (i.e. the closest one will be first in the array). Alternatively, you use nearObjects command, which doesn't sort results.
position can use the format: [[x,y,z], ["ClassName",...], radius] or [object, ["ClassName",...], radius] To use it without any ClassName filter: [object or position, [], radius]. A list of ClassName types (Tanks eg) can be found in CfgVehicles
Since Arma 3 v1.65.138818 it is possible to switch search and sorting mode between 2D and 3D - Groups:
- Uncategorised
Syntax
- Syntax:
- nearestObjects [position, types, radius, 3Dmode]
- Parameters:
- [position, types, radius, 3Dmode]: Array
- position: Object or Array in format PositionAGL or Position2D - where to find objects, center position.
- types: Array - list of class name of the objects to search for.
- radius: Number - range from center position to search for objects.
- 3Dmode (Optional): Boolean - The object search and sorting mode: true - 3D, false - 2D. Default: true - 3D (Available since Arma 3 v1.65.138818)
- Return Value:
- Array - array of objects sorted according to distance2D
Examples
- Example 1:
nearestObjects [player, ["Car","Tank"], 200];
- Example 2:
nearestObjects [player, ["house"], 200];
- Example 3:
nearestObjects [[2716,2949,0], ["Car","Truck"], 100];
- Example 4:
- Return every object in 50 metres radius around player:
nearestObjects [player, [], 50]
Additional Information
- See also:
- nearestTerrainObjectsfindNearestEnemynearestBuildingnearestObjectnearObjectsnearestLocationnearEntitiesnearTargetsnearSuppliesnearestLocationWithDubbingnearObjectsReadynearRoads
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Notes
- Posted on unknown
- Vigilante
-
To get a list with alive targets for various situations use this construct:
_nearestTargets = nearestObjects [_submunScanPos, ["VBS2_TANK","TANK"], _scanArea]; _validNearestTargets = []; {if (alive _x) then {_validNearestTargets set [(count _validNearestTargets),_x];};} forEach _nearestTargets;
results in _validNearestTargets being filled with targets == alive .. (you could use other conditions there, of course!) -- Vigilante
- Posted on 10. Aug. 2010
- Rübe
- Passing an empty array to define the types will also return objects with no class at all (such as trees, bushes, stones, ...).
Example:
_objects = nearestObjects [_position, [], _radius];
Passing the array ["All"] is not the same and will only return objects that have some sort of class.
- Posted on 11.09.2013
- Katulobotomia
- If you want to detect nearby grenades for the position of a unit, for example, using 'nearestObjects' won't work. You have to use
'nearObjects' instead.
count (nearestObjects [_unit, ["GrenadeHand"], 30]) // WON'T WORK
Won't ever return anything but 0.count (_unit nearObjects ["GrenadeHand", 30]) // WORKS!
Will work. - Posted on March 22, 2014
- AgentRev
- The distance from which an object is determined to be inside the radius is calculated from its model center (object modelToWorld [0,0,0]), and not the position returned by getPos/ATL/ASL. If an object is used as the origin from which to scan, distance is calculated from its model center as well.
Bottom Section
- Posted on October 26, 2014 - 15:15 (UTC)
- Killzone Kid
-
Return all trees in 100m radius around player:
trees = []; { if (str _x find ": t_" > -1) then { trees pushBack _x; }; } forEach nearestObjects [player, [], 100];
- Posted on August 27, 2015 - 16:45 (UTC)
- Tankbuster
- If you use "Man" as the class to look for, it will only find dismounted men. IE, men in vehicles will NOT be found.
- Posted on January 8, 2016 - 12:14 (UTC)
- Killzone Kid
- The first call to this command can take significantly longer then consecutive calls. But even after the objects in given radius were cached, the sorting this command performs could be quite expensive. For example to sort ~7000 object it might take up to 100ms. For performance reasons you can use nearObjects instead, which is basically the same command but without added sorting.
- Posted on March 2, 2016 - 23:09 (UTC)
- Ceeeb
-
In Arma 3, nearestObjects is partially broken and is unable to return nearby placed explosive charges or mines when searching by classnames. Use nearObjects, nearestObject or allMines instead.
Example of non-functional code://always returns nothing, even if there are objects that should be returned nearestObjects [position player, ["APERSMine_Range_Ammo", "SatchelCharge_Remote_Ammo"], 10]
- Posted on October 31, 2016 - 00:32 (UTC)
- Killzone Kid
- Since Arma 3 v1.65.138818 the default sorting is done according to 3D distance not distance2D as before. This is an attempt to correct some very old bug in implementation.