このサイトでは、以前、StarterAssetsThirdPersonのアニメーターコントローラーの設定内容について確認&解説をしました。今回は引き続き、Unity公式のStarterAssetsThirdPersonに設定されているアニメーターコントローラーについて理解を深めましょう。
Unity公式のStarterAssetsThirdPersonは3Dゲームで活用できる高機能な無料アセットです。 ※StandardAssetsのThirdPersonに代わりUnity2020辺りから本格導入する方が …
前回はアニメーションに関する部分の設定を一通り確認しましたが、今回は、実際にキャラクターがアニメーションしている時に、アニメーターコントローラーがどの様に変化しているのか?という部分にスポットを当てています。
前回と同様にUnityのアニメーション機能について理解を深めていきましょう!
コンテンツ
事前準備・前提
まずは本記事の本題に入る前の事前準備をします。
事前知識
冒頭でもお伝えした通り、以前、StarterAssetsThirdPersonのアニメーターコントローラーの設定については一読をお願い致します。
Unity公式StarterAssets|三人称視点キャラのアニメーションを分析!
キャラクターアセットの設定
PlayerArmatureオブジェクトにSyntyの有料アセットキャラクターに設定しています。
※今回はカウボーイのキャラクターを設定しました。
キャラクターの設定方法については以下を参考にして下さい。
Assets StoreにはUnity公式の無料アセットがたくさん存在しています。そのどれもが素晴らしいアセットばかりです。 その中から、今回は三人称視点のプレイヤーキャラクターが簡単に使える「Starter Asset …
アニメーションとアニメーターコントローラーの遷移
では、実際にStarterAssetsThirdPersonの実行時のアニメーションを確認しながら、アニメーターコントローラーの遷移状況を確認してみましょう。
■参考
アニメーターコントローラーのリファレンス:https://docs.unity3d.com/ja/2020.3/Manual/class-AnimatorController.html
アニメーションクリップのリファレンス:https://docs.unity3d.com/ja/2020.3/Manual/AnimationClips.html
※対象Versionを選択してください。
キャラクター移動時のブレンドツリーの遷移状況
キャラクターのアニメーション&ブレンドツリーの遷移状況を確認してみます。以下はゲーム実行画面で、キャラクターの動作&ブレンドツリーの状態です。
- 画面上:ゲーム実行画面(キャラクターが横に移動)
- 画面下:ブレンドツリーの遷移状態
実行画面(画面上)とアニメーターコンポーネントのブレンドツリー(画面下)を見てみると、キャラクターのスピードに合わせて、以下のアニメーション遷移している事が分かります。
- Idle:待機アニメーション
- Wald_N:歩くアニメーション
- Run_N:走るアニメーション
アニメーションの切替えはパラメータで実現しています。
※詳細はこの後で紹介します。
パラメータ値に応じてアニメーション遷移する仕組み
パラメータの値とアニメーション遷移について、もう少し詳しく見てみましょう。
ブレンドツリーには「Speed」というパラメータがあります。ブレンドツリーのパラメータ「Speed」の値に応じて、アニメーション遷移しています。
スクリプトで、キャラクターの移動速度を取得して、パラメータのSpeed値に反映しています。そして、ブレンドツリーのコンポーネントを見てみると、Thresholdという項目があります。これがアニメーションが切り替わる閾値になります。
この閾値が設定されているため、Speedが0の場合は待機、0<Speed<2の場合は歩く、2<Speed<6の場合は走るという風に、Sppedの値でアニメーションが変わります。
実際に移動するキャラクターのアニメーション設定をする際に参考になると思います。
アニメーターコントローラーについて
次に、StarterAssetsThirdPersonに設定されているアニメーターコントローラー上で、キャラクターがジャンプした時のアニメーションクリップの遷移も確認しましょう。
アニメーターコントローラーのアニメーションクリップは以下になります。
- Idle Wark Run Blend(上記で確認したブレンドツリー)
- JumpStart(ジャンプ開始アニメーション)
- InAir(ジャンプ中アニメーション)
- JumpLand(ジャンプ着地アニメーション)
■StarterAssetsThirdPersonのアニメーターコントローラー
キャラクタージャンプ時のアニメーション遷移
以下は、キャラクターがジャンプをした時のアニメーションの遷移状況です。
- 画面上:ゲーム実行画面(キャラクターがジャンプ)
- 画面下:アニメーターコントローラーの遷移状況
入力情報に基づいてアニメーターコントローラー上でアニメーションクリップの遷移があり、それに応じてキャラクターのアニメーションも変化します。
パラメータについて
StarterAssetsThirdPersonのアニメーターコントローラーにはパラメータ設定がされています。
プレイヤーの入力値や、オブジェクトの状態をパラメータとして受け取り、受け取ったパラメータの値によってアニメーション遷移する事になります
各パラメータには以下の様な役割があります。
- Speed(Float) :キャラクター移動速度※移動速度に応じてアニメーションが変わる(止まる⇒歩く⇒走る)
- Jump(Bool) :ジャンプボタンを押すとTrueになる(ジャンプ中に再ジャンプはできない)
- Grounded(Bool):足が地面に着地している場合はTrueになる(着地している状態でJumpがTrueになるとジャンプ)
- FreeFall(Bool) :空中にいる場合Trueになる(空中にいる間はジャンプできない)
- MotionSpeed(Float):各アニメーションのスピード(固定)
アニメーターコントローラーのTransition(矢印)をクリックすると、コンポーネントの確認ができます。そこで遷移条件を確認する事ができます。
下記の場合は、「Conditions」に「Jump – true」となっています。
「パラメータのJumpがTureになった場合に遷移する」という条件になります。
C#スクリプトの入力パラメータ
これらのパラメータの値は、Third Person ControllerというC#スクリプトの入力パラメータの値とも連動しています。
例えばMoveSpeedを変更すると、先ほどのアニメーターコントローラーのパラメータにも影響します。
※様々な所でパラメータという言葉が出てきますが、何となく覚えておいていただければと思います。
まとめ
Unity公式のStarterAssetsThirdPersonのアニメーション設定と実際の動作を確認してみました。
特にポイントとして覚えていただきたいのは以下の2つです。
- キャラクター移動時のブレンドツリーの遷移状況
- キャラクタージャンプ時のアニメーターコントローラーの遷移状況
実際のアニメーションの動きと、アニメーターコントローラーの遷移状況を見比べる事で、Unityの3Dアニメーションについて、理解を深めていただけたのではないでしょうか。
特に、自分で3Dアニメーションを作成する際の参考にしていただけると嬉しいです。