instance_place

使用此函数,您可以使用为检查运行代码的实例的碰撞掩码来检查与另一个实例或对象的所有实例碰撞的位置。使用该选项时,实际上是要求GameMaker将实例移动到新位置,检查冲突,向后移动,并告诉您是否发现冲突。

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

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

这将适用于精确碰撞,但仅当实例和要检查的对象都选择了精确碰撞遮罩时才适用,否则仅应用边界框碰撞。

此函数将返回发生碰撞的实例的唯一 id,或找到的图块地图的 图块地图元素 ID,但如果不需要,则返回使用函数 place_meeting() 的速度稍快一些。如果未发现冲突,则返回 noone

请参阅: 碰撞

 

语法:

instance_place(x, y, obj);

参数类型描述
xReal要检查实例的X位置。
yReal要检查实例的Y位置。
objObject Asset or Object Instance or Tile Map Element ID or Array对象、实例、图块地图 ID、所有 / 其他关键字或包含这些项目的数组

 

返回:

Object Instance or Tile Map Element ID or noone

 

例子:

var _inst = instance_place(x, y, obj_Enemy);
if (_inst != noone)
{
    hp -= _inst.dmg;
    instance_destroy(_inst);
}

上面的代码将检查与"obj_Enemy"实例的冲突,如果存在冲突,它将将"hp"变量减少冲突实例的"dmg"变量中存储的量,然后销毁冲突实例。