使用此功能,您可以检查与另一个对象或图块地图的所有实例发生碰撞的位置。
当您使用此功能时,您正在检查房间中的单个点,并且如果该对象检查了精确碰撞,则将针对实例的边界框或实例的遮罩进行检查。
除了对象和实例之外,该函数还接受:
传递数组允许您在一次调用中检查多个对象和 / 或图块地图的碰撞。
您还提供了一个 DS 列表 ,因此与调用实例发生冲突的任何实例或图块地图的 id 值都将添加到给定列表的末尾。您可以在调用此函数之前 清除 该列表,以便它仅包含此函数调用的结果。您还可以选择根据从正在检查的位置到发现发生冲突的实例的原点的距离来对列表进行排序。
该函数返回找到的实例 / 图块地图的数量,如果没有找到则返回 0。
请参阅: 碰撞
instance_position_list(x, y, obj, list, ordered);
参数 | 类型 | 描述 |
---|---|---|
x | Real | 要检查实例的X位置。 |
y | Real | 要检查实例的Y位置。 |
obj | Object Asset or Object Instance or Tile Map Element ID or Array | 对象、实例、图块地图 ID、所有 / 其他关键字或包含这些项目的数组 |
list | DS List | 用于存储冲突实例的ID的DS列表。 |
ordered | Boolean | 列表是否应按距离排序(true)或(false)。 |
Real (The number of instances / tile maps found to be in collision)
var _list = ds_list_create();
var _num = instance_position_list(mouse_x, mouse_y, all, _list, false);
if (_num > 0)
{
for (var i = 0; i < _num; ++i;)
{
instance_destroy(_list[| i]);
}
}
ds_list_destroy(_list);
上面的代码将检查在鼠标位置找到的所有实例是否有冲突。这些将被添加到DS列表中,然后循环以销毁冲突中的每个实例。