私は、ボールプロジェクトのチュートリアルをロールページのように動かすユニティプロジェクトに取り組んでいます。基本的に、ボールは一度だけジャンプして、私はすでにロジックを実装しています。しかし何かが失敗し、私は理解できません。ここでボールを一度だけ飛ばす
は私のコードが再開
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));
}
}
です:を私はちょうど、私は場合colisionを入力して確認し、ボールが床から始まるためでfalseに設定されているinAir変数が始まる追加しましたオブジェクトが他のオブジェクトと衝突して、地形inAirにタグを変更した場合はfalse、そうでない場合はTrue、次にFixedUpdateチェックの最後にキーがスペースであるかどうか、ボールが空気中にない場合ボールはジャンプすることができる
何が起きているのですか:変数inAirは常に偽です。常にそうであれば最初に入り、常に偽になります。他に入力しないので、何が間違っていますか?
これは決して他のものと衝突しませんか? – TheLethalCoder
プレイヤーがジャンプした後(その2回目の 'AddForce'呼び出しの直後)、' inAir'を真に設定したいかもしれません。 – rutter