我将移动脚本附加到播放器。参考滚球教程,并对其进行了修改以进行跳跃。问题是,当玩家可能在任何方向上移动时,玩家都会开始朝该方向旋转,即使我仍然站在一个位置上,它也会开始旋转并跌落平台。播放器具有刚体,boxcollider组件。
void Awake ()
{
playerRigidbody = GetComponent<Rigidbody>();
Coll = GetComponent<CapsuleCollider>();
}
/*private void Update()
{
}*/
// Update is called once per frame
void 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);
}
最佳答案
在您的代码中,您使用AddForce函数,因此我确认您的播放器刚体未将Kinematic设置为true。
当您的角色与其他任何物体(例如地面,墙壁)碰撞时,您的角色可能会旋转。
您可以像Bijan所说的那样通过检查器冻结刚体的旋转。
我不建议您同时使用AddForce和MovePosition,这可能还有其他问题。
like this
关于c# - 为什么我的播放器会统一旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51601427/