質問: 0) { anim.SetInteger("ani", 0); //標準の歩いている状態 } Debug.Log(action); //0と表示される } ``` やりたい事 基本的には歩いている。クイズに正解すれば喜ぶアクションを一度だけ再生する。 症状 常に標準の歩いている状態になってしまいます。(一度も喜ぶアクションをしません。) また、if(action==0){ }の方を削除すれば連続してずっと喜ぶアクションが続いてしまいます。 ・アニメーターはデフォルトが歩く状態になっており 遷移はアクション「0」に向け て指定しております。「0」はデフォルトの歩く状態と全く同じになっております。 ・アニメーターのアクション「0」への矢印では「終了時間あり(Has Exit Time)」にはチェックをつけています。 ・プロジェクトにあるクリップ「112」のループ時間にはチェックがついておりま す。(外しても同じでした。) どなたかご指導の程宜しくお願い致します。
回答: 一応`Move(int action)`内の最初に `Debug.Log(action);` と入れて、本当に指定のタイミングでaction値が112になっているか確認してください。 上記が正しく動作している場合、 モーション「0」の「Has Exit Time」のせいかと思います。これを切ってみてください。 (モーション0再生中にaniが112になる→HasExitTimeがオンなのでモーション終了までステート遷移しない(遷移の判定が行われない)→スクリプト側では直後にaniが0になる為、モーション終了時にはaniは0なのでステート遷移しない、ということかと) 【Unity】Animatorのモーション切り替えが即座に行われないときの対処 - テラシュールブログ