无法让球跳跃并同时移动

时间:2013-12-19 12:32:37

标签: c# unity3d

我能够在任何时间点左右跳跃或移动。但是无法跳跃并同时向左/向右移动。我错过了什么吗?我的代码如下。谢谢你的建议。

public int rotationSpeed = 100;
public float jumpHeight = 8;

private bool isFalling = false;

void Update () {
    // handle ball rotation 
    float rotation = Input.GetAxis("Horizontal") * rotationSpeed;
    rotation *= Time.deltaTime;
    rigidbody.AddRelativeTorque(Vector3.back * rotation);  

    //check input
    if (Input.GetKeyDown(KeyCode.W)) 
    {
        rigidbody.velocity = new Vector3(0, jumpHeight, 0); 
    }
}

1 个答案:

答案 0 :(得分:4)

如文档中所述:here

在大多数情况下,您不应直接修改速度 您应该使用AddForce代替AddForceAtPosition

编辑:

只是为了澄清原因: 速度是应用于对象的不同力的计算结果,您可以指定此值以强制不使用微积分但是您不应该因为将内置的AddForce添加力更加稳定和干净,

简而言之,如果您指定速度,则在使用AddForce之前绕过您之前完成的每个微积分,因为名称表示您向力量总和添加新力

编辑2:

void Update () {
    // handle ball rotation 
    float rotation = Input.GetAxis("Horizontal") * rotationSpeed;
    rotation *= Time.deltaTime;
    rigidbody.AddRelativeTorque(Vector3.back * rotation);  

    //check input
    if (Input.GetKeyDown(KeyCode.W)) 
    {
        rigidbody.AddForce(new Vector3(0, jumpHeight, 0) * Time.deltaTime); 
    }
}