collision_point

collision_point 检查参数 x,y 指定的点是否与参数 obj 指定的对象或图块地图的 任何 实例发生碰撞。

此函数将返回发生碰撞的实例的唯一 id,或找到的图块地图的 图块地图元素 ID。如果未发现冲突,则返回 noone

此检查可以是精确的,也可以是非精确的,但要启用精确碰撞,您要检查的对象或实例 必须 还为其精灵启用精确碰撞。如果不是,则默认检查基于边界框。下图说明了其工作原理:

Collision point example请记住,要同时考虑精确碰撞对象精灵和碰撞函数,必须精确标记为"on"。还应当注意,函数的返回值可以是被认为处于碰撞中的任何一个实例的ID,因此,如果三个实例在该点上重叠,则它们的ID中的任何一个都可以是函数的返回值。

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

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

 

语法:

collision_point(x, y, obj, prec, notme);

参数类型描述
xReal要检查的点的x坐标。
yReal要检查的点的y坐标。
objObject Asset or Object Instance or Tile Map Element ID or Array对象、实例、图块地图 ID、所有 / 其他关键字或包含这些项目的数组
precBoolean检查是基于精确碰撞(true,速度较慢)还是基于其边界框(false,速度较快)。
notmeBoolean是否应排除调用实例(如果相关)(true)或(false)。

 

返回:

Object Instance or Tile Map Element ID or noone

 

例子:

if (collision_point(x, y, obj_Cursor, false, true) != noone)
{
    score += 10;
}

在这里,我们检查对象位置处的点,该点具有对象"obj_Cursor"的代码。如果有一个,那么我们在分数变量上加10。