跳到主要内容

碰撞与物理:需要时再引入

级别:按需学习。 翻牌配对通过 UI 命中和 ID 操作完成规则,不需要物理引擎。理解碰撞有助于以后做躲避、弹球和平台跳跃。

命中、碰撞与物理不是同一件事​

  • UI 命中:某个触摸位置是否落在可交互区域。
  • 几何碰撞:两个形状是否相交,可以只检测不移动对象。
  • 物理模拟:计算速度、力、重力、接触与响应,通常包含碰撞。

Cocos 3.8 提供 2D 碰撞与 Box2D 相关能力。按玩法需求选择,避免为简单区域检测加载不必要的模块。具体后端和组件搭配以固定版本的官方文档为准。

不用引擎也能理解的 AABB​

type Rect = {x: number; y: number; width: number; height: number};
function overlaps(a: Rect, b: Rect) {
return a.x < b.x + b.width && a.x + a.width > b.x &&
a.y < b.y + b.height && a.y + a.height > b.y;
}

例子假设矩形未旋转、宽高为正、处于同一坐标空间,恰好接触边缘不算重叠。是否把边缘接触算碰撞,是规则选择。旋转或复杂形状需要另一种检测方法。

独立小练习:移动方块躲避​

创建玩家方块和障碍方块,先画出碰撞轮廓,再检测重叠并进入失败状态。需要物理效果时,添加对应 Rigidbody2D 与 Collider2D,并检查碰撞矩阵、分组和触发器设置。

不要同时每帧强改位置又期待刚体自然模拟。高速物体还可能穿过薄障碍,需要检查物理步长、连续检测能力或设计速度上限。

判定与表现的分工​

碰撞回调可能多次触发。先在规则层确认本局仍可失败,再提交失败状态,最后播放效果。分数、生命或奖励需要防止一次接触重复扣除或发放。

练习与完成标准:让障碍连续接触玩家,失败只发生一次;切换碰撞分组时能解释为什么失效;关闭物理模块后翻牌项目仍能运行。

参考:Cocos 2D 物理简介。