instance_place_list


描述

使用此函数,你可以使用运行检查代码的实例的碰撞遮罩来检查物体的所有实例发生碰撞的位置。当你使用它时,你实际上要求 GameMaker Studio 2 将实例移动到新位置,检查碰撞,然后向后移动并告诉你是否检测到了碰撞。这将适用于精确碰撞,但前提是选中的实例和物体都选择了精确碰撞遮罩,否则仅应用边界框碰撞。函数将用被认为与调用实例碰撞的物体的所有实例的唯一 ID 值填充(以前创建的)数据结构列表(DS list),你可以选择根据从执行检查的实例的原点到发现碰撞的实例的原点的距离来排序列表。请注意,该函数还接受特殊关键字 all,在这种情况下,将列出所有找到的要在碰撞中的实例。函数返回找到的实例数,如果找不到,则返回 0。

请注意,在执行检查之前,给定的 x / y 坐标将被四舍五入为最接近的整数,因此如果这 不是 你需要的(或你一直在使用传统的 GameMaker 产品),你应该使用 floor 坐标进行检查:instance_place_list(floor(x), floor(y), obj_Enemy)


语法:

instance_place_list(x, y, obj, list, ordered);

参数 描述
x 用于检查实例的 x 位置。
y 用于检查实例的 y 位置。
obj 要检查的实例的物体。
list 用于存储碰撞实例的 ID 的数据结构列表。
ordered 列表是(true)否(false)应按距离排序。


返回:

Int(整数,发现碰撞的实例数)


例如:

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

上面的代码将检查在调用实例位置找到的所有实例是否碰撞。这些将被添加到一个数据结构列表中,然后循环通过该列表来销毁碰撞中的每个实例。