让球跳一次

时间:2016-12-09 16:41:13

标签: c# unity3d unity5

我正在开发一个统一项目,其工作方式类似于在统一页面上滚动球项目教程,基本上我希望球只跳一次,为此我已经实现了逻辑,但有些事情失败了我无法弄清楚。

这是我的代码

public bool inAir = false;


void OnCollisionEnter(Collision other){
    if (other.gameObject.tag=="Terrain") 
        inAir = false;
        else
        inAir = true;
    }

void FixedUpdate () {
    float moveHorizontal = Input.GetAxis ("Horizontal");
    float moveVertical = Input.GetAxis ("Vertical");

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);

    rb.AddForce (movement * speed);
    Debug.Log (inAir);

    if (Input.GetKeyDown ("space") && !inAir){
        rb.AddForce(new Vector3(0,jump,0));
    }

}

恢复:我刚刚添加了一个inAir变量,该变量在开始时设置为false,因为球从地板开始,然后我检查colision输入是否对象与其他对象进行切割我将标签更改为Terrain inAir是假的,否则它是真的,然后在FixedUpdate结束时检查键是否为空格,如果球不在空中,只是在这种情况下球可以跳

发生了什么:变量inAir始终为false,如果始终输入第一个,并且始终保持为false,则永远不会输入else,所以这里有什么问题?

0 个答案:

没有答案