アニメーターとアニメーション
メニューを表示するにはスワイプしてください
Unityにおいて、animatorはゲームオブジェクトにアニメーションを与える重要な役割を担います。アニメーションクリップとトランジション、パラメーターを連携させることで、キャラクターやオブジェクトに動的な動きや挙動を作り出します。これらのアニメーションにはキーフレームデータや設定が含まれており、オブジェクトの動きや相互作用を定義します。没入感のある魅力的なゲームプレイ体験を実現するために不可欠な要素です。
アニメーター
このオブジェクトにアニメーションを持たせるためには、アニメーターコンポーネントを追加する必要があります。
また、アニメーターに追加するためのコントローラーも作成する必要があります。
次に、階層からオブジェクトをクリックしてアニメーターパネルを開くと、次のような画面が表示されます。
Unityのアニメーターパネルでは、アニメーターがゲーム内のアニメーションの流れを制御します。
パラメーターは、アニメーション状態間の遷移に影響を与える変数です。Entry Stateはゲーム開始時の初期アニメーションを定義し、Any Stateは任意の状態からの遷移を可能にします。 パラメーターにはブール値、浮動小数点数、整数があり、ゲームの状況に応じて動的にアニメーションを変更できます。
アニメーション
まず、オブジェクトをクリックしてアニメーションパネルを開くと、次のように表示されます。
アニメーションが存在しない場合、オブジェクト用のアニメーションクリップを作成するよう求められます。作成をクリックすると、アニメーションの名前と保存場所を選択するよう指示されます。アニメーションを作成すると、アニメーターとアニメーションパネルの表示が変わります。
Unityのアニメーションパネルでは、開発者がゲームオブジェクトのアニメーションを作成、編集、管理できます。主な構成要素として、アニメーションタイムラインがあり、キーフレームやアニメーショントラックを表示し、時間経過に沿ったアニメーションの正確な編集を可能にします。アニメーションのパラメータを変更したい場合は、アセットフォルダーで選択して変更できます。
- ループ時間:アニメーションが終端から始端へシームレスに再開;
- ループポーズ:最終フレームから初期フレームへの滑らかな遷移によるシームレスなループ;
- オフセット:アニメーション再生の時間遅延を指定、同期やバリエーションに有用。
アニメーションパネルでの記録
Unityのアニメーションパネルでは、記録ボタンがアニメーターにとって重要なツールです。有効化すると、Unityエディター内で直接キーフレームアニメーションの記録が可能になります。記録中にシーンビューやインスペクターウィンドウでオブジェクトのプロパティ(位置、回転、スケールなど)を操作することで、自動的にキーフレームを作成できます。
クリップの追加
「Create New Clip」をクリックすることで、オブジェクトに別のクリップを追加できます。
アニメーション間の遷移
異なるクリップを用意した後、アニメーター内でそれらの間の遷移を設定可能。 遷移を作成するには、まずターゲットを選択し「Make Transition」をクリックし、次に遷移先を選択。
このようにして、2つのアニメーション間に遷移が作成される。
遷移をクリックすると、インスペクターで次のようなビューが表示される。
Has Exit Time
有効にすると、遷移で指定された終了時間に基づき、現在のアニメーションが完了してから次のステートへ遷移します。Has Exit Time を無効にすると、条件やトリガーに基づいて、より動的かつ即時にステート間の遷移が可能になります。Has Exit Time の活用例については、今後さらに詳しく説明します。
遷移条件用パラメーターの作成
遷移の条件を設定するために、パラメーターを作成します。
次に、+ ボタンを押して条件を作成します。
状態Aから状態Bへ遷移するためには、can_Translate = trueである必要があります。
例:人間の動作
ゲーム内でキャラクターを操作している状況を想定します。パソコンで遊ぶ、寝る、食事をするアニメーションがあります。
遷移の条件
キャラクターがアニメーション間を遷移するタイミングを制御するために、条件を使用します。例えば、「空腹」という条件があるとします。この条件が真の場合、キャラクターはパソコンで遊ぶアニメーションから食事をするアニメーションへ遷移します。
遷移の実装
UnityのAnimatorでは、「playing with computer」アニメーション状態から「eating」アニメーション状態への遷移を作成します。この遷移の条件として「hungry」ブール値を設定します。したがって、「hungry」がtrueになると、Unityは自動的にキャラクターを「playing」から「eating」へ遷移させます。
さらに多くの条件や遷移を追加することも可能です。例えば、**「tired」**という条件を用意し、「playing」から「sleeping」への遷移をトリガーすることができます。また、より滑らかな遷移のためにアニメーションをブレンドすることもできます。
つまり、Unityのanimatorはまさに私たちと同じように機能します。各ブロックは日常生活でできるアクションを表し、矢印はそのアニメーションに切り替わるための条件を保持しています。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください