在半空中物体时移动方向不正确

时间:2014-02-04 03:39:05

标签: c# unity3d

延长我以前的question,我的角色(暂时)是一个立方体。多维数据集使用C#脚本和Rigid Body组件进行映射。

我使用以下代码来改变我的角色(这是一个僵硬的身体)的方向:

public float speed = 0;
public Vector3 jumpHeight = new Vector3();
public bool isOnGround = true

void Update () {
    bool isTouched = false;
    if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began) {
        isTouched = true;
    }
    if ((Input.GetButtonDown("Jump") || isTouched) && isOnGround) {
        isOnGround = false; 
        rigidbody.AddForce(jumpHeight, ForceMode.VelocityChange);
    }
    if (Input.GetKeyDown(KeyCode.LeftArrow)) {
        transform.Rotate(0, -90, 0);
        rigidbody.velocity = Vector3.zero;
        rigidbody.angularVelocity = Vector3.zero;
    }
    if (Input.GetKeyDown(KeyCode.RightArrow)) {
        transform.Rotate(0, 90, 0);
        rigidbody.velocity = Vector3.zero;
        rigidbody.angularVelocity = Vector3.zero;
    }
}

void FixedUpdate() {
    if (isOnGround) {
        rigidbody.AddForce(transform.forward * speed, ForceMode.Acceleration);
    }
}

其中isOnGround是一个布尔值,当Runner对象触地时设置为true。但是,在它离开地面之前,它沿着Z轴移动。当装置离开地面时,它会滑动到X-Z轴。我错过了什么?

注意:鉴于Runner对象的质量为3。

1 个答案:

答案 0 :(得分:0)

如果jumpHeight设置为Vector3(0,7,0),问题就消失了,Runner对象与轴跳跃对齐。