このサイトでは、以前、StarterAssetsThirdPersonのアニメーターコントローラーの設定内容について確認&解説をしました。今回は引き続き、Unity公式のStarterAssetsThirdPersonに設定されているアニメーターコントローラーについて理解を深めましょう。

前回はアニメーションに関する部分の設定を一通り確認しましたが、今回は、実際にキャラクターがアニメーションしている時に、アニメーターコントローラーがどの様に変化しているのか?という部分にスポットを当てています。

前回と同様にUnityのアニメーション機能について理解を深めていきましょう!

事前準備・前提

まずは本記事の本題に入る前の事前準備をします。

事前知識

冒頭でもお伝えした通り、以前、StarterAssetsThirdPersonのアニメーターコントローラーの設定については一読をお願い致します。

Unity公式StarterAssets|三人称視点キャラのアニメーションを分析!

キャラクターアセットの設定

PlayerArmatureオブジェクトにSyntyの有料アセットキャラクターに設定しています。
※今回はカウボーイのキャラクターを設定しました。

キャラクターの設定方法については以下を参考にして下さい。

■Syntyのキャラを設定

アニメーションとアニメーターコントローラーの遷移

では、実際に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を変更すると、先ほどのアニメーターコントローラーのパラメータにも影響します。
※様々な所でパラメータという言葉が出てきますが、何となく覚えておいていただければと思います。

■C#スクリプトのパラメータ設定

まとめ

Unity公式のStarterAssetsThirdPersonのアニメーション設定実際の動作を確認してみました。

特にポイントとして覚えていただきたいのは以下の2つです。

今回特に確認していただきたい所

  • キャラクター移動時のブレンドツリーの遷移状況
  • キャラクタージャンプ時のアニメーターコントローラーの遷移状況

実際のアニメーションの動きと、アニメーターコントローラーの遷移状況を見比べる事で、Unityの3Dアニメーションについて、理解を深めていただけたのではないでしょうか。

特に、自分で3Dアニメーションを作成する際の参考にしていただけると嬉しいです。