已经设置了碰撞组件的密度为什么刚体的质量还是0

cc.director.getPhysicsManager().enabled = true
         cc.director.getPhysicsManager().gravity = cc.v2(0, -320)

         var rigidbody = this.getComponent(cc.RigidBody)

         console.log( "rigidbody",rigidbody )
         console.log( "rigidbody.getMass()",rigidbody.getMass() )

         var physicsCollider = this.getComponent(  cc.PhysicsCollider )
         console.log(  physicsCollider )
         physicsCollider.density = 10
         console.log( "rigidbody.getMass()",rigidbody.getMass() )

         rigidbody.applyForceToCenter(  cc.p( 500,500 ), true  )

我已经设置碰撞组件的密度是10了为什么刚体质量还是0,而且添加的力无效?

cc.director.getPhysicsManager().enabled = true;
这行放在哪边?

1赞

上面代码都在onload里,cc.director.getPhysicsManager().enabled = true;和下面的代码是对齐的,复制粘贴后变成这样的。
物理已经开启了,节点可以受重力影响为什么添加力却不行,而且质量一直是0

我把getMass()放onLoad里打印出来也是0 放自定义函数里调用就有了

你解决了吗?我也不明白,刚体质量一直是0,密度设置了,可是没有体积啊怎么算

假设每个组件的初始化在onload完成,当我一个节点初始化依赖另一个节点的属性的时候,就有可能获取到错误的值,因为有可能另一个节点还没有执行onload,start是所有组件的onload都执行完了才会执行,这时获取另一个节点的属性就不会有问题,因为那个节点初始化完成了