Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 让球只跳一次_C#_Unity3d_Unity5 - Fatal编程技术网

C# 让球只跳一次

C# 让球只跳一次,c#,unity3d,unity5,C#,Unity3d,Unity5,我正在做一个unity项目,类似于unity页面上的roll the ball项目教程,基本上我希望球只跳一次,为此我已经实现了逻辑,但有些东西失败了,我无法理解 这是我的代码 public bool inAir = false; void OnCollisionEnter(Collision other){ if (other.gameObject.tag=="Terrain") inAir = false; else inAir

我正在做一个unity项目,类似于unity页面上的roll the ball项目教程,基本上我希望球只跳一次,为此我已经实现了逻辑,但有些东西失败了,我无法理解

这是我的代码

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,因为球从地板开始,然后我检查碰撞输入,如果该对象与另一个我将标记更改为Terrain inAir的对象碰撞,则inAir为false,否则为true,然后在FixedUpdate结束时检查键是否为空格键,如果球不在空中,则球可以跳跃


发生了什么:air中的变量始终为false,如果始终为false,它将输入第一个变量,并且始终为false,它从不输入else,那么这里出了什么问题?

而不是在
OnCollisionInterer
函数中将
inAir
设置为
true
false
,也实现
OnCollisionExit
,然后在两个函数中设置它。这更可靠

public bool inAir = false;

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

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

它从来不会与其他任何东西发生冲突?一旦玩家跳起,你可能想将
inAir
设置为true(就在第二次
AddForce
呼叫之后)。效果很好,谢谢,朋友,你更改了值,但我得到了答案:DYeah刚刚注意到了这一点。修好了,欢迎光临!