
没有设置为0的代码是可以抛出去的,现在有个需求,想把一个球攥在手里,然后等动作播放到抛的时候,再丢出去,我的思路是创建的时候先把质量设为0,抛的时候再给质量赋值.
没人吗没人吗!!!
set mass (value: number) {
let body = this._sharedBody.body;
body.mass = value;
if (body.mass == 0) {
body.type = CANNON.Body.STATIC;
} else {
body.type = this._rigidBody.isKinematic ? CANNON.Body.KINEMATIC : CANNON.Body.DYNAMIC;
}
body.updateMassProperties();
if (body.isSleeping()) {
body.wakeUp();
}
}
质量设置成0之后,会切换刚体为静态,可能是这个原因
可是这个代码后半段不就是重置刚体的状态吗
设置为10后下一帧再执行抛的动作试试
可以自己log看一下刚体的类型,另外你可以通过useGravity来攥在手里,没必要纠结质量
试过了,延时1秒都不行…但是我在球上挂了一个脚本,onenable的时候执行上面设0的操作再恢复之后又是可以的…
好的谢谢,这只是我的思路遇到的问题,想了解一下 