2016-04-30 11 views
1

おはよう、C#Android Touchの入力抵抗またはタイムアウトの実装 - Unity

私はタッピングゲームを作ろうとしていますが、ワンタッチで出力される量は連続しています。

タップごとに出力するにはどうすればよいですか?100?

if (Input.touchCount == 1 && idle == true) 
{ 
p = true; 
pSound.Play(); 
Debug.Log("Tap"); 
} 
else if (Input.touchCount == 0) 
{ 
p = false; 
} 
+0

質問を正しく行う方法を学びます。なぜあなたのコードをコメントセクションに置くのですか? – Programmer

+0

質問を修正しました(b) –

+0

コードをコメントセクションから質問セクションに移動したので、あなたの質問をもっと詳しく説明できますか?それを言い換えて、あなたが何をしたいのか、そして現在何をしているのかを説明してください。そして、コードを実行している場所、開始または更新機能を含めることもできます。問題を再現するのに必要な完全なコードを記述してください。 – Programmer

答えて

0

これは、Input.touchCountが対象ではありません。 Touch.tapCountは、タップを検出するために使用されるものです。 Input.touchesからすべての接触を取得し、それをTouch構造体に配列として保存する必要があります。次に、各タッチをループし、どちらが終了したかを確認します。eventが呼び出されます。ここでTouch.tapCountを確認できます。

void Update() 
{ 
    Touch[] touchScreen = Input.touches; 
    int touchScreenSize = touchScreen.Length; 
    for (int i = 0; i < touchScreenSize; i++) 
    { 
     if (touchScreen[i].phase == TouchPhase.Ended) 
     { 
      if (touchScreen[i].tapCount == 1) 
      { 
       pSound.Play(); 
       Debug.Log("Tap"); 
      } 
      else if (touchScreen[i].tapCount == 0) 
      { 

      } 
     } 
    } 
} 
+0

申し訳ありませんが、これで複数のタップがあるかどうかを確認できます。ただし、各タップ後に再起動しないため、p = trueが一貫しています。そのif文でタッチするたびに配列をリセットする必要がありますか? –

+0

@itsPav問題は 'idle == true'です。私はそれがどのように機能するのかわかりませんし、あなたがそこで達成しようとしていることを理解していません。私はそれを削除し、コードを更新しました。これはうまくいくはずで、何もリセットする必要はありません。新しいコードをコピーします。 – Programmer

+0

そのコードにはp = trueがありません。これは残念ながらタップを終了しても消えません。スクリプトに同じ問題を追加しました。 pを確認するパブリックブールがあります。ボタンで指を持ち上げた後にボタンを使用して正常に行ったことがありますが、このタップは難しいです。 –

関連する問題