2016-12-24 20 views
-3

「スペース」ボタンから入力を取得しようとしていますが、クリックすると入力を受け付けないようです。私のコードは次のとおりです:Input.GetKeyDownが機能しない

void OnTriggerEnter2D (Collider2D other) 
{ 
    if (other.gameObject.tag == "GreenKey") { 
     print ("Green Key taken"); 
     Destroy (other.gameObject); 
     greenKey_canvas.enabled = true; 
    } else if (other.gameObject.tag == "RedKey") { 
     print ("Red Key taken"); 
     Destroy (other.gameObject); 
     redKey_canvas.enabled = true; 
    } else if (other.gameObject.tag == "YellowKey") { 
     print ("Yellow Key taken"); 
     Destroy (other.gameObject); 
     yellowKey_canvas.enabled = true; 
    } else if (other.gameObject.tag == "Gem") { 
     print ("Gem taken"); 
     gems = gems + 5; 
     gemsText.text = gems.ToString(); 
     Destroy (other.gameObject); 
    } else if (other.gameObject.tag == "RedGem") { 
     print ("Gem taken"); 
     gems++; 
     gemsText.text = gems.ToString(); 
     Destroy (other.gameObject); 
    } else if (other.gameObject.tag == "LiveTaker") { 
     lives--; 
    } else if (other.gameObject.tag == "RedDoor") { 
     if (redKey_canvas.enabled) { 
      if (Input.GetKeyDown(KeyCode.Space)) { 


      //OPEN DOOR 
      other.gameObject.GetComponent<SpriteRenderer>().sprite = enterDoor; 
      redKey_canvas.enabled = false; 
      } 
     } 
    } else if (other.gameObject.tag=="YellowDoor") { 
     if (yellowKey_canvas.enabled) { 
      //OPEN DOOR 
     } 
    } else if (other.gameObject.tag=="GreenDoor") { 
     if (greenKey_canvas.enabled) { 
      //OPEN DOOR 
     } 
    } 
} 

コンソールでは、「入力されたドア付きキー」というメッセージが表示されますが、スペースを押すと何も起こりません。

私も「DoorEnter」という名前の入力マネージャにAxisを追加しようとしましたが、それはどちらか動作しません...

+0

このコードまたはコード全体を含む完全な機能を投稿することができます。これだけでは手伝ってもらえません。 – Programmer

+0

ちょうど@Programmer –

答えて

4

理由このdosent作品は、OnCollisionEnter機能のみを活性化することですフレームが最初に発生し、GetKeyDownはボタンが押し出された単一フレームを開始するだけです。

1つの非常に醜い修正は、GetKeyをGetKeyDownに置き換えて、ドアに入るときにすでにスペースを保持することです。

もっと良い解決策は、変数を、Updateループのifステートメントに追加することです。ユーザーが入るとアクティブにし、ユーザーがコリジョンエリアを離れると非アクティブにします。

次に、このようなif文ます

if(inCollider && Input.GetKeyDown(KeyCode.Space)){ 
//Open door here 
} 

をまた、誰もがこれを正しくフォーマットすることができますか? (電話で午前)

編集:衝突はトリガーを意味します!ごめんなさい!

+0

を編集しました。 –

関連する問題