为什么我的球员统一轮换

我将移动脚本附加到玩家。参考滚球教程,修改为跳跃。问题是当玩家向任何方向移动时,玩家开始向那个方向旋转,即使我站在一个位置不动,它也开始旋转并从平台上掉下来。播放器有一个刚体,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);

}


一只名叫tom的猫
浏览 161回答 2
2回答

收到一只叮咚

在您的代码中,您使用 AddForce 函数,因此我确认您的播放器刚体没有将 Kinematic 设置为 true。当您的角色与任何其他物体(例如地面、墙壁)发生碰撞时,您的角色可能会旋转。你可以像 Bijan 说的那样通过检查员冻结刚体的旋转。我不建议你同时使用 AddForce 和 MovePosition。它可能有其他问题。

翻翻过去那场雪

这是由于刚体组件的性质。这个组件非常逼真,当加力和撤除力时,物体仍然具有惯性,因此物体仍在运动。说到旋转,是因为当对物体施加力时,物体也会获得旋转运动(也称为角运动)。您可以使用 Rigidbody 组件上的约束来冻结旋转。更深入地了解这个组件 [here]。1在我看来,它是 Unity 的核心组件之一,绝对值得研究。我希望我回答了你的问题!
打开App,查看更多内容
随时随地看视频慕课网APP