关于2D物理的刚体唤醒机制

  • Creator 版本:3.7

如图:我放置了8个刚体节点,各自都有圆形碰撞检测组件,刚体类型为Dynamic,并设置awake on load为false(图中Ball~Ball-007这几个节点),这8个刚体的Group设置为互相不发生碰撞;

然后放置了3个带有方形碰撞检测组件的刚体节点作为边界,刚体类型为static(图中Wall~Wall-002三个节点),其中Wall-001的碰撞检测组件位置和尺寸如图所示,并未与Ball刚体的圆形碰撞检测组件有接触,Wall与Ball之间开启碰撞。

在网页调试器中运行结果如下图:

与Wall-001处于同一垂直线上的Ball刚体则被唤醒了,受到重力影响落下,在接触Wall-001的碰撞检测组件后弹起。其余刚体均处于休眠状态。

做了几次测试,Wall-001与Ball的碰撞检测组件边界距离超出一定范围外就不会唤醒刚体,具体的距离与碰撞检测组件的高度有关。

进一步做了几个不同的测试,可确定的情况如下:

1.互相会发生碰撞检测的两个休眠刚体在距离相近,无需发生重叠就会唤醒刚体;
2.垂直方向触发唤醒的距离与碰撞体的高度有关,碰撞体高度越高,触发唤醒的距离就越大;
3.横向方向目前没发现距离与宽度的相关关系,只有在距离接近接触的时候才会互相唤醒。

依然有很大疑惑,希望有大佬能够详细解释一下休眠刚体被唤醒的机制。