collision_point_list

This function is the same as the collision_point() function, only instead of just detecting one instance in collision at a time, it will detect multiple instances. You supply the x/y position of the point to check and you can set the check to be precise (in which case all instances being checked will need to have precise collision masks) and whether the check should include the calling instance or not. You supply a DS list too which will be populated with the unique id values of all instances of the object that are considered to be in collision with the calling instance, and you have the option to order the list based on the distance from the given point to the origin of the instances found to be in collision. The function returns the number of instances found, or 0 if none are found.

Note that instead of an object index you can supply the instance keyword all, to check for all instances in the current room, which may include the instance running the code (depending on the notme argument).

 

Syntax:

collision_point_list(x, y, obj, prec, notme, list, ordered);

Argument Description
x The x coordinate of the point to check.
y The y coordinate of the point to check.
obj The object to check for instance collisions.
prec Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).
notme Whether the calling instance, if relevant, should be excluded (true) or not (false).
list The DS list to use to store the IDs of colliding instances.
ordered Whether the list should be ordered by distance (true) or not (false).

 

Returns:

Integer (The number of instances found to be in collision)

 

Example:

var _list = ds_list_create();
var _num = collision_point_list(x, y, obj_Enemy, false, true, _list, false);
if _num > 0
    {
    for (var i = 0; i < _num; ++i;)
        {
        instance_destroy(_list[| i]);
        }
    }
ds_list_destroy(_list);

The code above will check the position of the calling instance for collisions with instances of "obj_Enemy". If there are any collisions, then the pre-created list is looped through and each instance that was in the collision is destroyed.