检测碰撞

Time:5 分钟

Collision(碰撞)是游戏世界中虚拟形状出现交集时所产生的结果。这些虚拟形状在 Roblox 中被称为 BasePart 对象,而其出现交集时的行为取决于开发者对碰撞现象的脚本编写

在进行碰撞处理时,请注意以下几点:

  • Roblox 中的碰撞会导致对象进行位移。当不希望对象位置受碰撞影响时,请禁用碰撞中涉及双方对象或其中之一的 BasePart/CanCollide|CanCollide 属性。禁用后,BasePart/Touched|Touched (已触碰)和 BasePart/TouchEnded|TouchEnded 事件仍然会触发,但碰撞对象的动量状态将不会受到影响。

  • 当需要隐藏碰撞检测部件(如大门前能够检测玩家进入建筑物的区域等)时,请将其 BasePart/Transparency|Transparency(透明度)属性设置为 1

  • BasePart|BasePart 同时也可以使用自定义网格。关于如何针对自定义网格为碰撞检测进行微调,请查看 Enum/CollisionFidelity|CollisionFidelity 一文。

Touched 事件

即使部件设置为不发生物理碰撞(也就是当 BasePart/CanCollide|CanCollide 设置为 false 时),Roblox 也会触发部件接触或相交的 BasePart/Touched|Touched (触碰)事件。此功能对触发游戏中的特定事件非常有用,例如打开活板门、在障碍赛中通过保存点保存游戏进度、以及依照玩家位置不同更改其区域天空盒等情况。

部件触发的碰撞

任何部件都可以用来触发 BasePart/Touched|Touched (触碰)事件。当需要在游戏中使用该事件时,必须通过 Connect() 为其连接一个函数。将下列 Script(脚本)放置在部件内,即可显示如何使用 BasePart/Touched|Touched (触碰)事件检测该部件与其他部件的碰撞。

Roblox官方链接:检测碰撞