KATOエンジニヤリング開発日誌

「アウトプット無きエンジニアにインプットもチャンスも無い」の精神で書いています

Unity認定開発者資格試験勉強 - アニメーション -

現在Unity認定開発者試験の勉強をしています。

japan.unity3d.com

Unityを仕事で使うことは無いですが、後々VR技術に触れることもあるかと思い受験することに決めました。

今回から16回にかけて、試験範囲である16個の区分についてまとめたいと思います。

アニメーション

Unity認定試験の最初の章はアニメーションです。

Unity公式の「試験目的一覧」のアニメーションの項目を見ると次のようになっています。

トピック サブトピック 認定の目的
Animatorシステム Animator Controller Asset ・Animator Controllerについて詳細に確認する
・GameObjectにAnimator Controllerを適用する
・Animator Controllerを作成する
State ・パラメータタイプについて定義する
・Animation Stateの違いを区別する
・Animation Stateを新規作成する
・Any Stateを実装する
Transition ・Transitionの条件を説明する
・Transitionプロパティの違いを区別する
・Transitionを作成する

Animatorシステム

Animator Controller Asset

Animator Controller Assetは、Unity上に作成され、キャラクターやオブジェクト用のアニメーションセットを配置・管理するためのもの。Animator Controllerは次の手順で作成することができる。

  • プロジェクトビューのドロップダウンメニューから 'Create > Animator Controller' を選択する。
  • プロジェクトビューにマウスカーソルを合わせ、右クリックして 'Create > Animator Controller' を選択する。
  • メニューバーの 'Assets > Create > Animator Controller' を選択する。

Animator Controllerを作成するとプロジェクトウィンドウ上にステートマシンのアイコンが表示される。

シーンに配置されたオブジェクトにAnimator Controllerを適用するには、プロジェクトウィンドウにあるステートマシンアイコンを適用したいオブジェクトのインスペクタにドラッグ&ドロップすればよい。

State

試験ではAnimation Controllerのパラメータについて問われるらしい。

プロパティ 説明
Speed アニメーションのデフォルトの速度
Motion ステートに割り当てられているアニメーションクリップ
Foot IK ステートで足のFoot IKを有効にするか。
ヒューマノイドアニメーションで適用可能。

Animator Contollerを新規作成すると「Entry」と「AnyState」の2つが最初から用意されている。

Entryは対象のオブジェクトがゲームシーンに登場したときのステートで、Any StateはどのStateにも遷移可能なステートのこと。これはアクションゲームでキャラクターが死ぬときに実行されているステートから遷移するためのステートとして利用できる。

新しいステートは 'Animatorウィンドウ上で右クリック > Create State > Empty' を選択するとデフォルトのステートが作成されるので、そのステートを選択し、プロジェクトウィンドウから作成済みのアニメーションをインスペクタのMotionプロパティにドラッグ&ドロップすることで作成できる。

もしくは作成済みのアニメーションをプロジェクトウィンドウからAnimatorウィンドウに直接ドラッグ&ドロップすることでステートを作成することができる。

Transition

アニメーションの切り替わりを設定できる項目。ステートマシンがあるアニメーションステートから別のアニメーションステートに切り替わったり、ブレンドされたりできるようにするもの。

あるStateから別のステートに遷移するための方法

「遷移」を作成するには、'ステートを右クリック > Make Transition > 表示される矢印を別のステートにドラッグ' という手順を踏む。

ExitTimeとは

Transitionのプロパティの項目のひとつで、HasExitTimeが有効である場合、ExitTimeの値は遷移が起きる正確な時間を表している。これは正規化された時間で表されており、ExitTimeが「0.75」であれば「75%アニメーションが再生された時点」を意味している。

ExitTimeが1より小さい場合は毎回アニメーションで評価され、1より大きい場合だと決まった回数ループ後に1度だけ評価される(例えば3.5だと3.5回ループしたあとに評価される)。

Fixed durationとは

Transitionのプロパティの項目のひとつで、Fixed Durationがチェックされていると遷移時間が秒単位で表示される。Fixed Durationがチェックされていない場合は遷移時間はソースステートの正規時間の割合として示される。

Transitionのフラグ設定方法について

ステートマシン内の遷移はExitTimeのほかに下記パラメータでも制御できる。

  • Float
    • 必要に応じて定義できる
      • ex: キャラクターのスピードが0.8以上であれば、「歩く -> 走る」に遷移等
  • Int
    • 発生した事象をカウントするのに役立つ
      • ex: キャラクターが攻撃された回数をカウントする
  • Bool
    • True / Falseで判断できる
      • ex: Colliderの通過条件を満たしていればTrue、そうでなければFalse
  • Trigger
    • Boolと異なり、スクリプトによってリセットされるまでTrue(もしくはFalse)のままとなる
    • Triggerが発生すると、消費されリセットされる