首页 > 解决方案 > 使用玩家输入移动刚体

问题描述

我试图使用控制器在 3d 世界中移动对象,但我认为我错过了一些东西,因为只要我给出任何输入,它就会被剪掉:

private void Update()
{
    float h = Input.GetAxisRaw("Horizontal");
    float v = Input.GetAxisRaw("Vertical");

    Vector3 movement = new Vector3(h, 0, v).normalized * Time.deltaTime * speed;
    if(h != 0 || v != 0)
        _rigidBody.MovePosition(movement);
}

使用 可以正常工作_rigidbody.velocity,但据我了解,这些类型的事情应该避免。

标签: unity3d

解决方案


Rigidbody.MovePosition通过插值设置刚体的位置。看起来您想将位置偏移movement,因此您可能应该设置速度。如果你还想使用MovePosition,你应该这样做_rigidBody.MovePosition(transform.position + movement);


推荐阅读