我制作了一个简单的第一人称移动角色。我没有使用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
1条答案
按热度按时间fbcarpbf1#
刚体。MovePosition仅适用于运动刚体,忽略物理。文档中说明:
将运动学刚体移向位置。
documentation
老医生甚至说:
如果刚体将isKinematic设置为false,则其工作方式与transform.position=newPosition类似,并将对象远程传送到新位置(而不是执行平滑过渡)。
(根据forum entry)
所以我会建议你简单地在想要的方向上设置一个速度。如果你需要帮助,评论你有困难的地方,我会帮助你。