Unityで3Dゲームを作っています。
現在、この画像のようなステートがあります。
「GoldUnkoIdle」は、キャラクターの停止状態のアニメーションのステートです。
「GoldUnkoRun」は、キャラクターの走っている状態のアニメーションのステートです。
このステート同士の遷移を、下記コードでパラメータを制御することで行っています。
if (MoveDiff == Vector3.zero) { Anim.SetTrigger("GoldUnkoIdle"); } if (MoveDiff != Vector3.zero) { Anim.SetTrigger("GoldUnkoRun"); }
2つのステートのTransitionのパラメータには、このコードに書いたパラメータがそれぞれ1つずつあるだけです。
キャラクターが止まっている時はIdleのアニメーションを再生し、走っている時はRunのアニメーションを再生させているのですが、この2つのアニメーション同士が遷移する時に問題が発生しました。
IdleからRunに遷移する時に、「Idle→Run→Idle→Run→Idle→Run」というように3往復ほどしてしまいます。
「Idle→Run」のように、普通に一回で遷移してほしいのですが、そうなりません。
この往復は、遷移が始まってから0.5秒間ほど発生します。
なので、停止状態から走る状態に遷移する時のアニメーションを見ると、なめらかに遷移せずにぎこちなくカクカクしてから遷移します。
逆にRunからIdleに遷移する時でも同じような現象が起こります。
このような現象が起こってしまう原因は何でしょうか?
もしかしたら、”IdelからRunに遷移した時点ではまだIdelのTriggerパラメータがtrueであり、そのせいでRun→Idleの遷移条件が満たされてしまい意図しない遷移が発生しているのかも”と考えたのですが、これを検証する方法がわかりません。
今回のようなステート同士がお互いに遷移できる形を使う場合は、Triggerパラメータではなくboolなど別のパラメータを使うしかないのですか?
回答1件
あなたの回答
tips
プレビュー