2017-02-15 24 views
-1

私は非常に最初のゲームを統一しています。この試合では、私のプレーヤーはいくつかの疑問符に触れるボールです。疑問符が表示されたら、質問とその答えを表示する必要があります。ここまではすべてのことが大丈夫です。今私は質問に応じてaまたはbを押す必要があります。答えが正しい場合は、ポイントを追加します。しかし、ここに問題があります。 Unityは私がキーを押すのを待つことはありません。 Unityがコードを通過してからボタンを押すと、ゲームがクラッシュします。ユニティ - iキーを押すまでユニティを待つ方法

+0

問題の最小限のコードを投稿してください。問題をより簡単に理解して識別できるようにしてください。 – Vect0rZ

+0

コードを投稿するときに元の投稿を編集することができます。コメントセクションには読み込みができません。それ以外では、入力後にQuestion.textとAnswer.textをリセットする理由は何ですか? (そしてあなたの元の質問に答えるために、入力を「待つ」ことはまったく良い習慣ではありません)。まず、テキストをリセットする必要はないかもしれませんし、そうする特別な理由があるかもしれません。 – Vect0rZ

+0

それらをリセットする理由は、動いている間に私の顔にテキストを持たないことです。もしアイデアがうまくいかないのであれば、私が望むものを私に与えることができますか?キーボードから質問に答える。私は土曜日までこれを終わらせなければならない。 –

答えて

1

さて、コメントセクションから離れて、問題の私の現在の理解で即興をしようとしましょう。

まず、次の点を考慮する必要があります。

void OnTriggerEnter(Collider collider) 

トリガONLY一度、他のコライダーが入ったとき。ソリューション? OnTriggerStayを使用します。

void OnTriggerStay(Collider collider) 

これは、オブジェクトが衝突しているときに入力を常にチェックします。

次に考慮する必要があるのは、テキストのリセットです。私が理解している限り、あなたがもう衝突していないときにそれを削除する必要があるので、追加の方法があります。 OnTriggerExitは、もはや衝突していないときに追加のコードを実行します。

void OnTriggerExit(Collider collider) 
{ 
    if (collider.gameObject.CompareTag("QuestionCube1")) 
    { 
     Question.text = ""; 
     Answer.text=""; 
    } 
} 

void OnTriggerEnter(Collider collider) 
{ 
    if (collider.gameObject.CompareTag("QuestionCube1")) 
    { 
     Question.text = "Which Number is bigger?"; 
     Answer.text = "A.5 B.10"; 

     if(Input.GetKeyDown(KeyCode.A)) 
     { 
      gameController.minusQuestion‌​Score(); 
     } 
     else if(Input.GeyKeyDown(KeyCode.B)) 
     { 
      gameController.addQuestionSc‌​ore(); 
     } 
    } 
} 
+0

ありがとうございます。 –

1

あなたはそれがトリガーされた後に入力を待つコルーチンを使用することができますので、全体的に。

void OnTriggerEnter(Collider collider) 
{ 

    if (collider.gameObject.CompareTag("QuestionCube1")) 
    { 
     Question.text = "Which Number is bigger?"; 
     Answer.text = "A.5 B.10"; 
     StartCoroutine(WaitForAnswer()); 
    } 
} 

IEnumerator WaitForAnswer() 
{ 
    for (;;) 
    { 
     if (Input.GetKeyDown(KeyCode.A)) 
     { 
      gameController.minusQuestion‌​Score(); 
      break; 
     } 
     else if (Input.GetKeyDown(KeyCode.B)) 
     { 
      gameController.addQuestionSc‌​ore(); 
      break; 
     } 
     yield return null; 
    } 

    Question.text = ""; 
    Answer.text = ""; 
    yield return null; 
} 
関連する問題