Cocos Creator V2.4.x PhysicsPolygonCollider._createShape 异常导致节点position NaN

  1. 编辑Points为如下点位(-10.00, 70.00),(-17.00, 62.00),(-6.00, 43.00),(-10.00, -28.00),(-21.00, -32.00),(-19.00, -60.00),(-11.00, -67.00),(1.00, -70.00),(12.00, -66.00),(18.00, -57.00),(19.00, -28.00),(4.00, -28.00),(4.00, 47.00),(11.00, 55.00),(13.00, 66.00)

  2. 刚体运动坐标计算异常,节点Position为(NaN, NaN)

  • 调试过程:
  1. 在update中打印刚体节点位置,发现除了首次update,其余update刚体节点位置均为NaN:

  2. 断点调试后发现,在PhysicsPolygonCollider._createShape方法中,出现了一个异常的shapem_centerroid属性为NaN:

  3. 进一步调试,发现在box2d.js中,异常的shape.m_centerroid是由ComputeCentroid方法计算得出:

  4. ComputeCentroid方法的最后,出现了一个除0的错误,导致了计算结果为NaN:

希望官方能跟进解决,谢谢!

https://github.com/cocos/cocos-engine/pull/10888/
看这个能不能解决

照着commit改了一下引擎,但是问题还是存在,似乎是在_createShape的时候找到了一个shape,这个shape三个顶点都在一条直线上(y坐标相同),然后就会出现这个问题