2016-11-21 4 views
1

オブジェクトのアクティブ化と非アクティブ化時に問題が発生しました。unity3dです。私はキーを押すとオブジェクトを有効にし、再度押すと無効にしたい。Input.GetKeyのキーを押すと複数回trueを返します

私のコードは問題ないと思います。しかし、それは正しく動作していません。私が最初にボタンを押すと、オブジェクトがアクティブになり、時には時にはキープレス作業がうまくいきません。私はそれがUpdate()の機能のためだと思う、それはすべてのフレームで実行されます。私は何をしているのか分かりません。

コード:

public class A : MonoBehaviour 
{ 
    [SerializeField] 
    private GameObject invSystem; 
    [SerializeField] 
    bool buttonCheck; 

    void Update() 
    { 
     if (Input.GetKey(KeyCode.P)) 
     { 

      if (!buttonCheck) 
      { 
       invSystem.SetActive(true); 
       buttonCheck = true; 
      } 

      else 
      { 
       invSystem.SetActive(false); 
       buttonCheck = false; 
      } 
     } 
    }   
} 

答えて

4

使用GetKeyDown relasedともう一度押すまで、フレームのみで一度だけ真となります。 GetKeyは押されている間は真を返します。これは、あなたのifステートメントを真にしてフレーム内で複数回実行するように複数回トリガされます。

if (Input.GetKey (KeyCode.P))は、if (Input.GetKeyDown(KeyCode.P))

関連する問題