collision_point_list

This function is the same as the collision_point() function, only instead of just detecting one instance / tile map in collision at a time, it will detect multiple instances / tile maps. 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, so the id values of any instances (or tile maps) that are colliding with the calling instance will be added to the end of the given list. You can clear the list before calling this function so that it only contains results from this function call. You also have the option to order the instances based on their distances from the given point to their origins. The function returns the number of instances / tile maps found, or 0 if none are found.

In addition to objects and instances, the function also accepts:

Passing an array allows you to check for collisions against multiple objects and/or Tile Maps in one call.

 

Syntax:

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

ArgumentTypeDescription
xRealThe x coordinate of the point to check.
yRealThe y coordinate of the point to check.
objObject Asset or Object Instance or Tile Map Element ID or ArrayAn object, instance, tile map ID, keywords all/other, or array containing these items
precBooleanWhether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).
notmeBooleanWhether the calling instance, if relevant, should be excluded (true) or not (false).
listDS ListThe DS list to use to store the IDs of colliding instances.
orderedBooleanWhether the list should be ordered by distance (true) or not (false).

 

Returns:

Real (The number of instances / tile maps 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.