ゲーム大好きクリエイターの自由生活ブログ

のぞむんむんが、ゲームについて日々感じたことや活きた経験を綴るブログです

MENU

【スポンサーリンク】

【Unity】3Dモデルアニメーションが上手く切り替えられない時の対処法

みなさんこんにちは。

実はこっそりとプライベートでゲーム製作をしているのぞむんむんです。

 

僕含めて2人チームで製作しているのですが、せっかく3Dモデルの可愛い女の子を作成してもらったのになんか上手くアニメーションが切り替えられない・・・(ゲームが完成したら色々公開します!)

やろうとしていることは、「何も操作しない間は待機モーションで、キーを押した時だけ走るモーションに切り替わる。キーを離したらまた待機モーションに切り替わる」というもの。

実際操作してみるとなんか動作が非常にもっさい。キーを押すとキャラが動き出すのだが、2秒くらい経過しないと待機モーションから走りモーションに切り替わらない

そう、最初の2秒くらいは待機モーションのままキャラが移動しているのだ(困惑

ということで、キーを押したらすぐにモーションが切り替わるように色々調べて解決してみた。

 

【スポンサーリンク】
 

 

3Dモデルアニメーションが上手く切り替えられない時の対処法

C#でプログラムを書いているのだが、ソースコードに問題があるのかなと思ったけど、やってることはキーを押した時にモーションを切り替えるだけのもの。恐らくソースコードではないと判断。

モーションのつなぎを管理している「Animator」 に原因があるんじゃないと思った。というかそこ以外考えられない。

まずステートの繋ぎかた、トランジション(Transition)に問題がないか確認。

f:id:nozomunmunjk24:20180927105206p:plain

ちゃんと、待機モーション(Wait)と走りモーション(Run)に矢印が向いている。問題なさそう。であるとすれば、それぞれのステート(State)の詳細な設定に問題があるに違いない。

ということで、StateのInspectorを確認することに。

f:id:nozomunmunjk24:20180927112133p:plain

あれ。。。なんか知らないチェックボックスがある。「Has Exit Time」(画像ではチェックが外れています。)

結論、原因はこいつだった。デフォルトではこいつのチェックがONになっています。この「Has Exit Time」のチェックを外したら、キーを押した直後にちゃんとアニメーションが遷移するようになった!!

冒頭で説明した通り、なんか動きがもっさい人は、このチェックボックスを外してみてください。

 

【スポンサーリンク】
 

 

Has Exit Timeとは

そもそもこいつは何者なんだ。調べると、

Has Exit Time

Exit Time はパラメーターに依存しない特別な遷移です。パラメーターの代わりにステートの正規化された時間に依存します。このオプションを有効にすると、遷移は Exit Time で指定した特定の時間に発生します。

 

引用元:アニメーション遷移 - Unity マニュアル

 いや全然意味わかんないよ!!

ということで調べてみたら、結構わかりやすい回答に導きついた。

  1. 指定されたタイミング(=Exit Time)に来た時、その時遷移条件(=Conditions)を満たしていたら、ステート遷移する。 
    →遷移条件を満たしていても指定されたタイミングになるまで遷移は行われない。
  2. 遷移条件が無い(=Conditionsに何も指定しない)場合、指定されたタイミング(=Exit Time)に来たら、ステート遷移する。 
    →HasExitTimeを指定しない場合、いつまで経っても遷移しない。

引用元:Unity - HasExitTimeをfalseにすると、ステートが遷移しなくなる。(63681)|teratail

 

ではでは今回はこの辺で!

 

【スポンサーリンク】
 

 

【スポンサーリンク】