2016-10-12 6 views
0

Unityで単純な近接攻撃を作成しようとしていますが、コードに問題があります。私は次のように書かれている:Unityでユーザ入力を使用するOnTriggerEnter

public class meleeAttack : MonoBehaviour 
{ 

    void Start() 
    { 
    } 

    void Update() 
    { 
    } 

    void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player") 
      print("What's up!!!"); 
    } 


} 

自体が正常に動作します。つまり、しかし、私は、プレイヤーがキーを押したときに、メッセージがポップアップ表示だけので、それを作りたいです。

void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player" && Input.GetKeyUp(KeyCode.F)) 
      print("What's up!!!"); 
    } 

問題は今のメッセージは、もはや私はFキーを押していた場合でも、表示されませんということです。私はOnTriggerEnterメソッドに以下を追加してみました。プレーヤーがFキーを押して、gameObjectと接触しているときにのみ、このコードを組み込むことができる方法はありますか?

答えて

1

更新ループでGetKeyUpを実行し、ブール値フラグを設定してからOnTriggerEnterでチェックする必要があります。

タイミング要件に応じて(つまり、OnTriggerEnterのブール値フラグを設定して、Updateループ内でそれを確認してください)。 [あなたの説明でこの方法を実行する可能性が高い]

問題はOnTriggerEnterが1回だけ発生するため、キー状態の変更をポーリングすることができないため、 Updateループのチェック

0

onTriggerEnterの代わりにOnTrigggerStayを使用すると、Updateイベントでspool boolを回避できます。

OnTriggerStayが

何かのようにトリガーに触れておき衝突他の ため、ほぼすべてのフレームと呼ばれ、あなたは

void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player" && Input.GetKeyUp(KeyCode.F)) 
      print("What's up!!!"); 
    } 
を必要と
関連する問題