如何添加和修改速度变量?

时间:2019-01-31 19:18:50

标签: c# unity3d

我是初学者。

我正在尝试与MovePosition一起移动多维数据集,它的工作原理很好,但是问题是我无法更改多维数据集的速度。

我为速度创建了一个公共浮动,并将其添加到vector3

Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.deltaTime;

但是它似乎不起作用。

我也尝试将其放在MovePosition中,但没有任何效果。

public class Movement : MonoBehaviour {

    public float speed = 55;
    private Rigidbody rb;


    public void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    public void FixedUpdate()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.deltaTime;


        rb.MovePosition(transform.position + movement);
    }
}

只要我改变速度,它就行不通。

3 个答案:

答案 0 :(得分:0)

您在Time.deltaTime部分中使用Time.fixedDeltaTime而不是FixedUpdate

Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.fixedDeltaTime;

答案 1 :(得分:0)

更改这两行:

Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.deltaTime;
rb.MovePosition(transform.position + movement);

这些:

Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);

看看是否有帮助

答案 2 :(得分:0)

将FixedUpdate函数重写为以下内容:

public void FixedUpdate()
{
    float h = Input.GetAxis("Horizontal");
    float v = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(h, 0, v).normalized;

    rb.velocity = movement * speed;
}

另外,不要将刚体操作乘以deltaTime或fixedDeltaTime;它们已经独立于帧速率,这样做可能会导致奇怪的结果。只需在FixedUpdate中调用它们就足够了。