2017-09-01 1 views
0

私はそれをSoldierControllerという新しいコントローラーを作成し、インスペクターのAnimatorコンポーネントの下にあるCharacter Controllerにドラッグしました。なぜキャラクターのための新しいアニメーターコントローラーを作成するとき、キャラクターは右に歩いていないのですか?

は、ルートモーション

を適用するオフに続いて三人のキャラクターに新しいスクリプトは、スクリプトの兵士と呼ばれる付属。

Animator Controller

その後、私はそれに二つの新しい国を追加アニメーターコントローラ設定:ウォーク、アイドルを。 ヒューマノイドイドルとヒューマノイドウォーク。

次に、デフォルトの開始状態がアイドルになるようにしました。 StateMachineのデフォルト状態を設定します。

私はウォークからアイドルに移行しました。このようにしてWを押すと少し歩き始めるが、それはキャラクターを動かし続けるが、ウォーキングアニメーションはない。

もし私がこの遷移を削除してアイドルからウォークに移行すると、Wを押すとウォーキングが行われますが、Wキーを離せばアイドリングしてから2〜3秒後にキャラクターが歩いて行きますそれは動くことなく歩くことを生き生きとさせ、私はアイドル時に何かを自動的に開始していません。

キャラクターには別のアニメーターコントローラーがありましたが、新しいコントローラーを作成して使用しました。

Animator Controller.

とスクリプト:すべての

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Soldier : MonoBehaviour 
{ 
    private bool _isWalking = false; 
    private Animator anim; 

    // Use this for initialization 
    void Start() 
    { 
     anim = GetComponent<Animator>(); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     var x = Input.GetAxis("Horizontal") * Time.deltaTime * 150.0f; 

     transform.Rotate(0, x, 0); 

     if (Input.GetKey("w")) 
     { 
      if (!_isWalking) 
      { 
       _isWalking = true; 
       anim.Play("Walk"); 
      } 
      var z = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f; 
      transform.Translate(0, 0, z); // Only move when "w" is pressed. 
     } 
     else 
     { 
      if (_isWalking) 
      { 
       anim.Play("Idle"); 
      } 
      _isWalking = false; 
     } 
    } 
} 
+0

私は、アイドル状態からウォークイン状態への遷移を削除しても正常に動作することを発見しました。 しかし、私は移行と使用パラメータを保持し、スクリプトのパラメータを更新することができ、それも動作することに気づいた。では、いつパラメータ/ sを使うべきですか?そして、そうでない時は? –

答えて

1

まず、あなたは2つの方法の間で混合されています。あなたはコードからアニメーションを演奏しており、アニメーターでトランジションも割り当てています。彼らは葛藤するでしょう。コードからアニメーションコントロール全体を実行するか、次の手順に従います。 1.遷移を使用してアニメータウィンドウで有限状態マシンを作成します。 2.これらのトランジション(bool、intなど)にパラメータを追加します。 3.アニメーションを制御するには、anim.SetBool( "walk"、true)のようなコードからパラメータの値を変更します。

アイドルを設定するか、アニメーションのラップモードをループにすることを忘れないでください。それ以外の場合は、一度再生してから停止します。

関連する問題