前回は、Unity で 3D キャラクターの動作を設定した AnimationClip を追加して、それをデフォルトステートに置き換える手順を紹介しました。
待機アニメーションを繰り返すためにループの設定も行いました。
前回の記事:Unity AnimationClip の追加とデフォルトステートの変更 | Compota-Soft-Press
![Unity AnimationClip を Animator ウィンドウにドラッグ&ドロップしてノードを追加します.](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimationClip-を-Animator-ウィンドウにドラッグ&ドロップしてノードを追加します.png)
今回は、待機用アニメーションを追加して、入力があったときだけ攻撃アニメーションを実行させて、他は待機アニメーションを繰り返す実装例を紹介します。
※ Unity のバージョンは 2021.3.25f1 です。3D キャラクターは Unity の無料アセット「Adventure Character」を使用しています。アニメーションは「Mixamo」から入手したものを使用しています。
仕様の確認
以下のように 3D キャラクターのアニメーションを切り替えます。
- 入力がない状態では、待機アニメーションを繰り返します。
- 入力があったときは、攻撃アニメーションを1度だけ行います。
- 入力はクリックとします。
アニメーションパラメータの設定
3D キャラクターに設定した AnimatorController アセットを Project ウィンドウでダブルクリックして、 Animator ウィンドウで開きます。
Animator ウィンドウ左上の「Layer」「Parameters」のタブを「Parameters」に切り替えて、近くの「+」ボタンを押して、リストから Bool を選択すると Parameters のリストに Bool パラメータが追加されるので、適当にリネーム(例では Attacking )します。
![Unity AnimatorController に Bool 型のパラメータを追加します.](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimatorController-に-Bool-型のパラメータを追加します.png)
攻撃アニメーションへの遷移の条件の設定
AnimatorController では、 Entry ステートの先にあるオレンジ色のデフォルトのステート(例では「待機」)が最初のステートになります。
待機ステートのときに、 Attacking パラメータが有効になったら、攻撃ステートに遷移するように「待機」→「攻撃」ステートへの遷移の線を設定します。
遷移先を指定するには、遷移元(例では「待機」)ステートを右クリックして表示されたメニューから「Make Transition」を選択し、遷移先(例では「攻撃」)ステートをクリックします。
![Unity AnimatorController の遷移元ステートの右クリックメニューMake Transition を選んだあと遷移先ステートをクリックして接続します.](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimatorController-の遷移元ステートの右クリックメニューMake-Transition-を選んだあと遷移先ステートをクリックして接続します.png)
作成した遷移先への線を選択して Inspector ウィンドウで遷移の条件や変化の仕方を設定します。
Conditions リストで「+」ボタンを押して条件欄を追加して、Attacking パラメータが true のときに遷移する条件を設定します。
Has Exit Time では、遷移元から遷移先にアニメーションがスムーズに置き換わるように、切り替わる時間を指定できます。
今回は、入力に応じて即時、遷移先(例では「待機」から「攻撃」)のアニメーションに切り替えるするために Has Exit Time は無効にします。
![Unity AnimatorController の遷移の条件や変化の仕方を遷移の線を選択したあと設定します.](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimatorController-の遷移の条件や変化の仕方を遷移の線を選択したあと設定します-1.png)
テスト
シーンを再生してテストしてみましょう。
#丸太の大きさやキャラクターの配置を少し見やすくしました。
まだ、キー押下時にパラメータを変化させるプログラムを付加していませんが、 Animator ウィンドウのパラメータのチェックボックスを操作することで、パラメータの値をシーン再生中に変更することができます。
「待機」→「攻撃」のステートの遷移条件に Attacking パラメータが true であることを設定してあるので、 Animator ウィンドウの Attacking パラメータを true にすることで、デフォルトステート「待機」アニメーションの繰り返しから、ステート「攻撃」アニメーションへ遷移することが確認できました。
※ シーン再生時に Animator ウィンドウのステートの青いプログレッシブバーを表示するには、そのアニメーションを行っているゲームオブジェクト(例では Man_Full)を選択しておく必要があります。
![Unity AnimationController のパラメータを変更することで他のステータス(アニメーション)に遷移しました.1/3](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimationController-のパラメータを変更することで他のステータス(アニメーション)に遷移しました.1.png)
![Unity AnimationController のパラメータを変更することで他のステータス(アニメーション)に遷移しました.2/3](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimationController-のパラメータを変更することで他のステータス(アニメーション)に遷移しました.2.png)
![Unity AnimationController のパラメータを変更することで他のステータス(アニメーション)に遷移しました.3/3](https://compota-soft.work/wp1/wp-content/uploads/2023/07/Unity-AnimationController-のパラメータを変更することで他のステータス(アニメーション)に遷移しました.3.png)
※画像・動画内のステータスという言葉は正しくはステートです。
今回はここまで
今回は、Unity の無料の 3D キャラクターアセット「Adventure Character 」をシーンに配置して、「Mixamo」で無料で入手した「待機」アニメーションから「攻撃」アニメーションへのステート遷移の設定を紹介しました。
まだ、プログラムを付加していませんが、 Animator ウィンドウで追加した「Attacking(攻撃中)」パラメータを false から true に画面で直接切り替えることで、待機から攻撃アニメーションへ遷移することを確認しました。
参照サイト Thank You !
記事一覧 → Compota-Soft-Press
コメント