江上宿六です。
前回はAnimatorControllerを使って最初に再生されるアニメーションの設定を行い、
無事に再生できました。 SetasLayerDefaultStateを選択して別のアニメーションを
最初に再生させたりもしましたが、ゲームに必要なのは動的な切り替えですので
今回はそういう感じの事をやります。
とりあえず現状ですが、最初にIdleに向かうという感じになっています。
これを歩いている時はWalkに向かい、歩くのを止めたらIdleに戻るようにします。
まずはAnimatorタブ内の左側を見てみましょう。
このParametersを開くとこんな感じになっています。 Blendの0.0は置いといて、
Nameと書かれたフィールドの右に+ボタンがあるのでこれを押します。
→
なんかデータ型を選択するウィンドウが出るので今回はBoolを選択し、
名前をisWalkなり、歩いている事を明示するような感じのものしておきます。
次にIdleのStateを右クリックしMakeTransitionを選択します。 そうすることで
白い矢印がIdleから伸びるようになるのでWalkを選択してWalkと繋げます。
繋げたらその白い矢印を選択してインスペクターを見てみましょう。
何か色々と設定出来そうな感じですが、とりあえず今注目するべきは下の方にある
下の方にあるConditionsです。 ここの+ボタンを押します。
↓
Blendなんたらと書かれたのが出てきましたが、リストからisWalkを選択します。
これは先ほど左側で追加したやつですね。 右の方でtrueとfalseが選べるように
なっています。 これがどういう意味をもつのかというと、そこで宣言した
フラグを用いてアニメーションの遷移を行える、という事なんですね。
どうやってそのフラグを使うのかという事ですが、基本的にスクリプトです。
だいたいこんな感じで書いて見ました。
7行目でAnimatorを宣言し、Start関数でGetComponentを行いAnimatorを取得します。
Update関数内でマウスの挙動を見張り、左クリックでAnimatorのSetBoolを行って
そのAnimatorのisWalkをtrueにするような指示を出す、という感じです。
実行して待機状態で左クリックをすると歩くアニメーションを行いました。
例によってgifでループしているので実際はidleの待機状態に戻る事はありませんが、
戻るようにするため同様にAnimatorで設定してみましょう。
↓
WalkのStateを右クリックしてMakeTransition、Idleに繋げたら矢印を選択します。
ConditionsでisWalkがfalseになったら遷移するような感じにします。
スクリプトの方も少々変更を加えます。
マウスのボタンを押し続けている間はtrueでそうでない時はfalseにしました。
まぁ、画像を見る限りマウスを押したタイミングが分かりにくいのでアレですけど、
だいたい想定した動きをしています。 次回以降は分かり易くしてみましょうかね。
あと一つ注意をして欲しい設定があるというか、ちょっと遅いんですけども。
このHasExitTimeというのがあるんですけど、ここにチェックが入っていると
アニメーションの1ループが終わった瞬間にフラグのチェックを行うような
挙動となって、瞬時にアニメーションが切り替わらない感じになると思います。
個人的にゲームでは欲しくないので、ここのチェックは基本外しておきたいです。
ともかくこういう感じでAnimatorのフラグを制御してアニメーションを行います。
しかしアニメーション話はまだまだ続くようです。