unity3d 为什么我的角色在Unity中穿墙

nc1teljy  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(161)

我制作了一个简单的第一人称移动角色。我没有使用CharacterController,因为我无法更好地控制它的物理特性。角色的Rigidbody不是运动学的,所有的碰撞矩阵在项目编辑器中都是正确的,但玩家仍然会穿过墙壁。这是我移动角色的方式:

playerRb.MovePosition(transform.position + (transform.forward * Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime) + (transform.right * Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime));

这是我的角色的Rigidbody组件:Rigidbody component screenshot

fbcarpbf

fbcarpbf1#

刚体。MovePosition仅适用于运动刚体,忽略物理。文档中说明:
将运动学刚体移向位置。
documentation
老医生甚至说:
如果刚体将isKinematic设置为false,则其工作方式与transform.position=newPosition类似,并将对象远程传送到新位置(而不是执行平滑过渡)。
(根据forum entry
所以我会建议你简单地在想要的方向上设置一个速度。如果你需要帮助,评论你有困难的地方,我会帮助你。

相关问题