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