此函数与 collision_rectangle() 函数相同,只不过不是一次仅检测一个实例 / 图块地图发生碰撞,而是检测多个实例 / 图块地图。您提供要检查的区域的左上角和右下角的 x/y 位置以及要检查的对象 / 图块地图,并且您可以将检查设置为精确 (在这种情况下,所有正在检查的实例都需要具有 精确的 碰撞掩码) 以及检查是否应包括调用实例。
您还提供了一个 DS 列表 ,因此与调用实例发生冲突的任何实例 (或图块地图) 的 id 值都将添加到给定列表的末尾。您可以在调用此函数之前 清除 该列表,以便它仅包含此函数调用的结果。您还可以选择根据实例从矩形区域中心到原点的距离对实例进行排序。该函数返回找到的实例 / 图块地图的数量,如果没有找到则返回 0。
除了对象和实例之外,该函数还接受:
传递数组允许您在一次调用中检查多个对象和 / 或图块地图的碰撞。
collision_rectangle_list(x1, y1, x2, y2, obj, prec, notme, list, ordered);
参数 | 类型 | 描述 |
---|---|---|
x1 | Real | 要检查的矩形左侧的x坐标。 |
y1 | Real | 要检查的矩形顶边的y坐标。 |
x2 | Real | 要检查的矩形右侧的x坐标。 |
y2 | Real | 要检查的矩形底边的y坐标。 |
obj | Object Asset or Object Instance or Tile Map Element ID or Array | 对象、实例、图块地图 ID、所有 / 其他关键字或包含这些项目的数组 |
prec | Boolean | 检查是基于精确碰撞(true,速度较慢)还是基于其边界框(false,速度较快)。 |
notme | Boolean | 是否应排除调用实例(如果相关)(true)或(false)。 |
list | DS List | 用于存储碰撞实例ID的D列表。 |
ordered | Boolean | 列表是否应按距离(true)或不按距离(false)排序。 |
Real (The number of instances / tile maps found to be in collision)
var _list = ds_list_create();
var _num = collision_rectangle_list(x - 100, y - 100, x + 100, y + 100, obj_Enemy, false, true, _list, false);
if (_num > 0)
{
for (var i = 0; i < _num; ++i;)
{
instance_destroy(_list[| i]);
}
}
ds_list_destroy(_list);
上面的代码将检查调用实例位置周围100像素的矩形区域,以确定是否与"obj_Enemy"实例发生碰撞。如果存在任何碰撞,则会循环显示预先创建的列表,并销毁碰撞中的每个实例。