我看到了CannonJS FPS Demo并注意到它使用了一个球体来进行玩家碰撞。我的角色不是球体,而是盒子或胶囊。
我尝试过使用盒子进行碰撞,但我似乎无法 lock the rotation在 X 或 Z 轴上设置 inertia
或 angleFactor
。当使用fixedRotation
时,它确实会锁定所有轴的旋转,但会导致运动受到严格限制。当使用不受限制的盒子形状时,盒子在移动时会开始翻滚。
如何通过锁定 X 轴和 Z 轴的旋转来保持玩家直立?
最佳答案
只需在初始化时将 angularDamping 设置为 1:
playerBody.angularDamping = 1;
然后在动画/运动部分中使用旋转键处理程序:
playerBody.angularDamping = 0;
但是不要忘记在每个循环开始时将其设置回 1。固定旋转似乎只是阻止了一些事情。我也尝试自己理解这一点: Here you can read more about it
关于javascript - CannonJS 锁定特定轴上的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598275/