collision_point 检查参数 x,y 指定的点是否与参数 obj 指定的对象或图块地图的 任何 实例发生碰撞。
此函数将返回发生碰撞的实例的唯一 id,或找到的图块地图的 图块地图元素 ID。如果未发现冲突,则返回 noone。
此检查可以是精确的,也可以是非精确的,但要启用精确碰撞,您要检查的对象或实例 必须 还为其精灵启用精确碰撞。如果不是,则默认检查基于边界框。下图说明了其工作原理:
请记住,要同时考虑精确碰撞对象精灵和碰撞函数,必须精确标记为"on"。还应当注意,函数的返回值可以是被认为处于碰撞中的任何一个实例的ID,因此,如果三个实例在该点上重叠,则它们的ID中的任何一个都可以是函数的返回值。
除了对象和实例之外,该函数还接受:
传递数组允许您在一次调用中检查多个对象和 / 或图块地图的碰撞。
collision_point(x, y, obj, prec, notme);
参数 | 类型 | 描述 |
---|---|---|
x | Real | 要检查的点的x坐标。 |
y | Real | 要检查的点的y坐标。 |
obj | Object Asset or Object Instance or Tile Map Element ID or Array | 对象、实例、图块地图 ID、所有 / 其他关键字或包含这些项目的数组 |
prec | Boolean | 检查是基于精确碰撞(true,速度较慢)还是基于其边界框(false,速度较快)。 |
notme | Boolean | 是否应排除调用实例(如果相关)(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。