使用玩家输入移动刚体

问题描述 投票:0回答:2

我试图使用控制器在一个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
2个回答
2
投票

Rigidbody.MovePosition用插值设置刚体的位置。看起来你想通过movement来抵消这个位置,所以你应该设置速度。如果你仍然想使用MovePosition,你应该做_rigidBody.MovePosition(transform.position + movement);


0
投票

“使用控制器”

你的意思是Character Controller组件?您有两个选项,它们在Unity文档中都有很好的解释。其次是Rigidbody组件。

© www.soinside.com 2019 - 2024. All rights reserved.