使用此函数,你可以使用运行检查代码的实例的碰撞遮罩检查与另一个实例或物体的所有实例的碰撞位置。当你使用它时,你实际上要求 GameMaker Studio 2 将实例移动到新位置,检查碰撞,然后向后移动并告诉你是否检测到了碰撞。这将适用于精确碰撞,但前提是选中的实例和物体都选择了精确碰撞遮罩,否则仅应用边界框碰撞。此函数将返回正在碰撞的物体的唯一实例 id,但是如果不需要这样做,那么使用 place_meeting 函数会稍微快一些。该函数还接受特殊关键字 all 和 other,如果没有发生碰撞,则返回关键字 noone,如果发生碰撞,则返回实例的唯一实例 ID 值。
请注意,在执行检查之前,给定的 x / y 坐标将被四舍五入为最接近的整数,因此如果这 不是 你需要的(或你一直在使用传统的 GameMaker 产品),你应该使用 floor 坐标进行检查:instance_place(floor(x), floor(y), obj_Enemy)。
instance_place(x, y, obj);
参数 描述 x 用于检查实例的 x 位置。 y 用于检查实例的 y 位置。 obj 要检查的实例的物体。
Real(实数,可能是实例 ID 值或关键字 noone)
var _inst = instance_place(x, y, obj_Enemy);
if _inst != noone
{
hp -= _inst.dmg;
instance_destroy(_inst);
}
上面的代码将检查与 “obj_Enemy” 实例的碰撞,如果有,它会将 “hp” 变量减少存储在碰撞实例的 “dmg” 变量中的数量,然后销毁碰撞实例。