2017-08-02 12 views
0

私は、かなり単純な問題であると思われるものに対してエレガントな解決策を見つけるのに苦労しています。状態変化のトリガーによる更新GetMouseButtonDown

Update()ではいくつかのコードは、STATE1で実行し、if (Input.GetMouseButtonDown(0))がクリックされたときに、いくつかのより多くのコードが実行され、状態がSTATE2に変更されます。

しかし、STATE2もInput.GetMouseButtonDown(0)は、いくつかのフレームのためにtrueを返すことができるように変化は、迅速に起こるようSTATE1元if (Input.GetMouseButtonDown(0))によってトリガされてif (Input.GetMouseButtonDown(0))を有しています。

ブール値を使用してみましたが、Time.deltaTime()を使用しましたが、最初のマウスクリックが2番目のトリガーをトリガーしないようにすることに問題があります。

誰かがアイデアや提案があれば、とても感謝しています。

ありがとうございました

答えて

1

あなたが探しているのはエッジ検出です。本質的には、状態の変化の状態をチェックします。ブール値は前回のブール値と同じですが、何もしませんが、一度変更するとコードを実行します。

//global variable 
bool lastState = false; 

//inside a method 
bool newState = Input.GetMouseButtonDown(0); 
if(newState != lastState) 
{ 
    lastState = newState; 

    //do stuff 
} 
関連する問題