我将移动脚本附加到玩家。参考滚球教程,修改为跳跃。问题是当玩家向任何方向移动时,玩家开始向那个方向旋转,即使我站在一个位置不动,它也开始旋转并从平台上掉下来。播放器有一个刚体,boxcollider 组件。void Awake (){ playerRigidbody = GetComponent<Rigidbody>(); Coll = GetComponent<CapsuleCollider>();}/*private void Update(){}*/// Update is called once per framevoid FixedUpdate (){ float h = Input.GetAxisRaw("Horizontal"); float v = Input.GetAxisRaw("Vertical"); bool down = Input.GetKeyDown(KeyCode.Space); if (down) { playerRigidbody.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } Move(h, v);}private bool IsGrounded(){ return Physics.CheckCapsule(Coll.bounds.center, new Vector3(Coll.bounds.center.x,Coll.bounds.min.y,Coll.bounds.center.z),Coll.height * 9f,Ground);}void Move (float h, float v){ movement.Set(h, 0f, v); movement = movement.normalized * speed * Time.deltaTime; playerRigidbody.MovePosition(transform.position + movement);}
2 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
在您的代码中,您使用 AddForce 函数,因此我确认您的播放器刚体没有将 Kinematic 设置为 true。
当您的角色与任何其他物体(例如地面、墙壁)发生碰撞时,您的角色可能会旋转。
你可以像 Bijan 说的那样通过检查员冻结刚体的旋转。
我不建议你同时使用 AddForce 和 MovePosition。它可能有其他问题。
- 2 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消