place_empty

您可以使用此函数检查并查看调用实例是否会与游戏中某个对象的任何其他实例或所有实例发生碰撞。为了正确解决此碰撞,运行代码的实例必须具有有效的碰撞遮罩(对于sprite本身或通过mask_index),并且它只会注册与同样具有有效遮罩的实例的碰撞。

该函数正在测试如果将调用实例放置在特定位置,是否不存在冲突,并且您可以提供可选参数来细化检查,以仅检查位置是否与给定类型的实例不发生冲突。请注意,如果未提供可选对象 ID,则会针对房间内的 所有 实例进行检查。

碰撞检查要么是精确的,要么基于实例的边界框,具体取决于选择的碰撞遮罩类型,但为了使精确碰撞正常工作,检查中的所有实例都应该具有精确的碰撞遮罩。

除了对象和实例之外,该函数还接受:

传递数组允许您在一次调用中检查多个对象和 / 或图块地图的碰撞。

 

语法:

place_empty(x, y, [object_id]);

参数类型描述
xReal要检查的x位置。
yReal要检查的y位置。
[object_id]Object Asset or Object Instance or Tile Map Element ID or Array可选 对象、实例、图块地图 ID、关键字全部 / 其他或包含这些项目的数组

 

返回:

Boolean

 

例子:

if (place_empty(mouse_x, mouse_y, obj_Enemy))
{
    x = mouse_x;
    y = mouse_y;
}

上述代码将检查是否与对象"obj_Enemy"的任何其他实例发生碰撞,就好像将调用实例放置在与鼠标相同的位置一样。如果未检测到碰撞,则将实例的x/y坐标设置为鼠标的坐标。