我正在开发一个统一项目,其工作方式类似于在统一页面上滚动球项目教程,基本上我希望球只跳一次,为此我已经实现了逻辑,但有些事情失败了我无法弄清楚。
这是我的代码
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,所以这里有什么问题?