2016-07-26 9 views
-1

私が今のように使っているならば、代わりにGetKeyDown KeyDownキーを押すと何もしません。 しかし、もし私がOキーを押したときにGetKeyとKeyCode.Oを使用しているなら、文字が歩くのを止めますが、キーを離すと常にOキーを押し続ける必要があります。Update関数内でInput.GetKeyを一度押すようにするにはどうすればよいですか?

私がしたいのは、キーを一度クリックすると、キーを離してもキャラクターが歩行を停止し、キー "p"をクリックするとウォーキングが再開されます。

私は歩き続ける/一時停止の速度プロパティを使用している理由は、私が作ればということである。

gameObject.GetComponent<Animator>().Stop(); 

文字ストップ歩行が、その後のシーン/世界の残りの部分をに動いていますキャラクター。私が使用しようとしたときと:

gameObject.GetComponent<Animator>().Play(); 

それから私は、プレイ(「ウォーク」)のようなプレイでいくつかのパラメータを配置する必要がありますが、それはうまくいきませんでした。

私は、speedプロパティをpause/continueに使用することにしました。

using UnityEngine; 
using System.Collections; 

public class Ai : MonoBehaviour { 

    Animator _anim; 
    // Use this for initialization 
    void Start() { 

     _anim = GetComponent<Animator>(); 
    } 


    // Update is called once per frame 
    void Update() { 

     if (Input.GetKey (KeyCode.Z)) { 
      _anim.speed = 20.0f; 
     } 

     if (Input.GetKeyDown ("o")) 
      gameObject.GetComponent<Animator>().speed = 0; 
     if(Input.GetKeyDown("p")) 
      gameObject.GetComponent<Animator>().speed = 2; 
    } 
} 

答えて

1

Input.GetKeyXのみEdit > Project Settings > Inputで指定されたキーを取得することができます。 既存のキーと一致しないキーを指定する必要があります。

必要がない場合は、既存のものを変更するか、sizeを変更して余分なものを作成してください。軸の名前はInput.GetKeyXに入れられます(例:Input.GetKeyDown("Fire1"))。

編集:
ドキュメントのいくつかのより多くの徹底的な情報:https://docs.unity3d.com/Manual/ConventionalGameInput.html

+0

OK]をクリックしてそれを行う方法を見つけました。それが正しいのかどうかは分かりませんが、うまくいきます。空の状態になる前に作成したウインドウ>アニメーターでは、Walkと呼ばれ、デフォルトで設定されているため、ヒューマノイドウォークを使用してゲームを実行しているときは常にキャラクタが歩いています。今私は、それを停止し、ヒューマノイドを使用して、私は使用しているスクリプトで新しい空の状態を追加:Input.GetKeyDown(KeyCode.O)と_anim.Play( "停止");それは働いています。それはそれを行う良い方法ですか? –

+0

いいですね。あなたが望むものに少し依存する。アイドル状態をデフォルト状態にすることもできます。また、アニメータでトランジションを行い、そこで作成できる変数にリンクさせることもできます。例えば。ブール 'isWalking'(または何でも)を作成し、アイドル状態からウォーク状態に' false-> true'遷移させることができます。その後、コード内でboolを変更します。アニメーターの設定方法については、このチュートリアルhttps://unity3d.com/learn/tutorials/topics/animation/animator-controller?playlist=17099と4をご覧ください。 –

関連する問題