4 - キャラクター アニメーションを追加する

アニメーションをファースト パーソン シューター キャラクターに追加する方法。

前提トピック

このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。

add-character-animation-final-result.gif

このセクションを終了すると、このような画面になります。

目的

このセクションでは、ファースト パーソン シューター キャラクターにアニメーションを追加する方法を説明します。

目的

このチュートリアルのこのセクションを完了すると、次のことができるようになります。

  • キャラクターをアニメートする

  • イベント グラフを設定する

  • アニメーション ステート マシンを追加する

  • 遷移ステートをアニメーションに追加する

  • アニメーション ブループリントをキャラクター ブループリントに関連付ける

ステップ

  • 4.1 - キャラクターをアニメートする

  • 4.2 - イベント グラフを設定する

  • 4.3 - アニメーション ステート マシンを追加する

  • 4.4 - アニメーション遷移ステートを追加する

    • 4.4.1 - アイドルからラン、またはその逆の遷移を追加する

    • 4.4.2 - アイドルからジャンプ スタートへの遷移を追加する

    • 4.4.3 - ランからジャンプ スタートへの遷移を追加する

    • 4.4.4 - ジャンプ スタートからジャンプ ループの遷移を追加する

    • 4.4.5 - ジャンプ ループからジャンプ エンドへの遷移を追加する

    • 4.4.6 - ジャンプ エンドからアイドルへの遷移を追加する

  • 4.5 - アニメーションとキャラクター ブループリントを関連付ける

4.1 - キャラクターをアニメートする

このステップでは、アニメーションをゲームに追加します。

アニメーションをインポートする

開始する前に、以下のリンクからサンプル アニメーションをダウンロードし展開してください。

  1. コンテンツブラウザ で右クリックして [New Folder (新規フォルダ)] を選択します。

    01-new-folder.png

  2. この新規フォルダに「Animations」という名前を付け、作成したフォルダをダブルクリックして開きます。

  3. 次の 5 つのローカル アニメーション ファイルを見つけます。

    • FPP_Idle.FBX

    • FPP_JumpEnd.FBX

    • FPP_JumpLoop.FBX

    • FPP_JumpStart.FBX

    • FPP_Run.FBX

  4. 「Animations」フォルダを右クリックして [Import to /Game/Animations/... (/Game/Animations/にインポート...)] をクリックし、アニメーションのインポートを開始します。

    02-import.png

  5. 表示された [FBX Import Options (FBX インポート オプション)] ダイアログ ウィンドウで [Select Skeleton (スケルトンを選択)] セクションの [HeroFPP_Skeleton] を選択し、次に [Import All (すべてインポート)] をクリックしてすべてのアニメーションをインポートします。

    03-mesh-skeleton.png

    正しい宛先のメッシュを選択していることを確認してから、アニメーションをインポートしてください。正しくインポートできないと、後でアニメーションをマップするときに問題が発生することがあります。

  6. コンテンツブラウザ の「Animations」フォルダに 5 つのアニメーションがすべて入りました。

    04-imported-items.png

  7. メイン メニュー パネルで [File (ファイル)] をクリックし、[Save All (すべて保存)] を選択してインポートされたメッシュを保存します。

    05-save-all.png

Animation ブループリントを作成する

  1. コンテンツ ブラウザ の「Animation」フォルダに移動し、ファイル ウィンドウ内で右クリックして [Animation (アニメーション)] > [Animation Blueprint (アニメーション ブループリント)] の順に選択します。

    06-add-animation-bp.png

  2. [AnimInstance] を親クラスとして選択し、[HeroFPP_Skeleton] をターゲット スケルトンとして選択します。

    07-create-animation-bp.png

  3. 作成したアニメーション ブループリントに「Arms_AnimBP」という名前を付けます。

  4. Arms_AnimBP」 をダブルクリックして ブループリント エディタ で開きます。

    08-open-armsanimbp.png

ステートマシン遷移変数を追加する

  1. [My Blueprint (マイ ブループリント)] パネルで [Add (追加)]* ボタンをクリックし、[Variable (変数)]** を選択します。

    09-add-variable.png

  2. 変数を [Boolean] にして (デフォルトで設定されていることがあるため、[Details (詳細)] パネルで確認します)、「IsRunning」という名前を付けます。

  3. [My Blueprint] パネルで [Add] ボタンをクリックし、[Variable] を選択します。

  4. 変数を [Boolean] にして、「IsFalling」という名前を付けます。

  5. アニメーションのステート マシンを制御する 2 つのアニメーション遷移変数ができました。

    10-variable-list.png

  6. Arms_AnimBP を開いたまま、次のセクションに進みます。

4.2 - イベント グラフを設定する

このステップでは、アニメーションのイベント グラフを編集して、ゲームの実行中にアニメーションの遷移変数が適切に起動することを確認します。

ステート変数を更新する

  1. Arms_AnimBP を開きます (開いていない場合)。

  2. [My Blueprint] パネルの [EventGraph (イベント グラフ)] をダブルクリックし、イベント グラフを開きます。

    11-open-event-graph.png

  3. グラフ 内で右クリックして コンテキスト メニュー を表示し、Event Blueprint Update Animation ノードを検索して選択します。

    Event Blueprint Update Animation ノードにより、アニメーションが更新されるたびにステート変数を更新できます。これにより常にゲーム ステートと同期されます。

    Copy Node Graph

    12-update-anim-node.png

  4. グラフ 内で右クリックして コンテキスト メニュー を表示し、Try Get Pawn Owner ノードを検索して選択します。

    Copy Node Graph

    13-get-pawn-owner.png

  5. グラフ 内で右クリックして コンテキスト メニュー を表示し、Cast to Character ノードを検索して選択します。

    Copy Node Graph

    14-cast-to-character.png

  6. 次のように追加されたノードのピンを接続します。

    Copy Node Graph

    15-connect-bp-script-1.png

  7. Cast to Character ノードの As Character 出力ピンから引き出し、Get Character Movement ノードを検索して選択します (このノードを見つけるために [Context Sensitivity (状況に合わせた表示)] をオフにしておきます)。

    Copy Node Graph

    16-character-movement.png

  8. Character Movement 出力ピンから引き出し、Get Movement Mode ノードを検索して選択します (このノードを見つけるために [Context Sensitivity] をオフにしておきます)。

    Copy Node Graph

    17-get-movement-mode.png

キャラクターの移動をクエリする

  1. Movement Mode 出力ピンから引き出し、Equal (Enum) ノードを検索して選択します (このノードを見つけるために [Context Sensitivity] をオフにしておきます)。

    Copy Node Graph

    18-equal-enum.png

キャラクターが降下しているかどうかを判定する

  1. Equal (Enum) ノードのドロップダウン値を [Falling] に設定します。

    19-select-falling.png

  2. [My Blueprint] パネルに移動し、Alt キーを押しながら IsFalling 変数を グラフ にドラッグして、Set Is Falling ノードを作成します。

    Copy Node Graph

    20-drag-isfalling.png

  3. Cast to Character ノードの 出力実行 ピンから引き出して Set Is Falling ノードの 入力実行 ピンに接続し、Equal (Enum) ノードの出力ピンから引き出して Set Is Falling ノードの Is Falling 入力ピンに接続します。ブループリント スクリプトは次のようになります。

    Copy Node Graph

    21-connect-bp-script.png

    クリックしてフルサイズで表示

キャラクターが走っているかどうかを判定する

  1. Cast To Character ノードに戻り、As Character ピンから再び引き出します。今度は、Get Velocity ノードを検索して選択します。

    Copy Node Graph

    22-get-velocity.png

  2. キャラクターが立ち止まっている場合以外は、速度ベクターの長さはゼロより大きい値になります。つまり、Get Velocity ノードの Return Value 出力ピンから引き出して Vector Length ノードを選択します。

    Copy Node Graph

    23-vector-length.png

  3. Vector Length ノードの Return Value 出力ピン (float) から引き出し、Greater ノードを検索して選択します。

    Copy Node Graph

    24-greater.png

  4. [My Blueprint] パネルに移動し、Alt キーを押しながら IsRunning 変数を グラフ にドラッグして、Set Is Running ノードを作成します。

    Copy Node Graph

    25-drag-isrunning.png

  5. Set Is Falling ノードの 出力実行 ピンから引き出して Set Is Running ノードの 入力実行 ピンに接続します。また、Greater ノードの出力ピンから引き出して Set Is Running ノードの Is Running ピンに接続します。

    26-connect-bp-script-3.png

  6. イベント グラフ は次のようになります。

    Copy Node Graph

    27-completed-event-graph.png

  7. [Compile (コンパイル)] ボタンと [Save (保存)] ボタンを順にクリックします。

    28-compile-save.png

4.3 - アニメーション ステート マシンを追加する

このステップでは、新規作成した変数を活用するステート マシンを作成します。

  1. [My Blueprint] パネルに移動し、[AnimGraph] をダブルクリックして開きます。

    29-open-animgraph.png

  2. グラフ を右クリックし、コンテキスト メニュー[State Machines (ステート マシン)] > [Add New State Machine... (新規のステート マシンを追加...)] の順に選択します。

    30-new-state-machine.png

  3. [My Blueprint] パネルで 新しいステート マシン を右クリックし、「Arms State Machine」という名前を付けます。

    31-add-arms.png

  4. Arms State Machine ノードの 出力実行 ピンから引き出して Final Animation Pose ノードの Result 入力実行ピンに接続します。

    32-connect-animgraph.png

  5. Arms State Machine ノードをダブルクリックしてグラフを開くと、編集することができます。

4.4 - アニメーション遷移ステートを追加する

このステップでは、次の 5 つのステートをステート グラフに追加します。

  • アイドル

  • 実行

  • JumpStart

  • JumpEnd

  • JumpLoop

  1. グラフ内を右クリックして、コンテキスト メニューから [Add State... (ステートを追加...)] を選択します。

    33-add-state.png

  2. ステートに「Idle」という名前を付けます。

  3. ステートをダブルクリックして、編集を始めます。

  4. グラフ 領域で右クリックし、Play FPP_Idle ノードを検索して選択します。

    34-play-idle.png

  5. Play FPP_Idle ノードの出力実行ピンを Output Animation Pose ノードの Result 入力実行ピンに接続します。

    35-connect-idle.png

    次の 4 つのステートについても、ステップ 1 から 6 を繰り返します。

    • Run (Play FPP_Run > Output Animation Pose)

    • JumpStart (Play FPP_JumpStart > Output Animation Pose)

    • JumpEnd (Play FPP_JumpEnd > Output Animation Pose)

    • JumpLoop (Play FPP_JumpLoop > Output Animation Pose)

  6. 完了すると、Arms State Machine グラフは次の画像のようになります。

    36-sm-graph.png

    各ステートには、それぞれの Final Animation Pose ノードに接続された Play ノードが含まれている必要があります。

  7. Entry ノードからワイヤーを引き出して Idle ステート ノードに接続します。

    37-entry-idle.png

4.4.1 - アイドルからラン、またはその逆の遷移を追加する

このステップでは、アイドル からラン、またはその逆の遷移を設定します。これによりキャラクターが動き始めたとき、ステート マシンは Idle から Run に遷移します。

  1. Idle ステートからワイヤーを引き出して Run ステートにつなげて、遷移を作成します。

    38-idle-run.png

  2. 遷移をダブルクリックして編集します。

  3. [My Blueprint] パネルに移動し、Ctrl キーを押しながら IsRunning 変数を グラフ にドラッグして、Get Is Running ノードを作成します。

  4. Get Is Running ノードの出力ピンから Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    39-idle-run-script.png

    キャラクターが動くのを止めると、ステート マシンは Run ステートから Idle ステートに遷移します。

  5. Arms State Machine グラフに戻り、Run ステートからワイヤーを引き出して Idle ステートに接続します。

    40-run-idle.png

  6. 遷移をダブルクリックして編集します。

  7. [My Blueprint] パネルに移動し、Ctrl キーを押しながら IsRunning 変数を グラフ にドラッグして、Get Is Running ノードを作成します。

  8. Get Is Running ノードの出力ピンから引き出し、Not Boolean ノードを検索して選択します。

  9. Not Boolean ノードの出力ピンから Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    41-run-idle-script.png

4.4.2 - アイドルからジャンプ スタートへの遷移を追加する

このステップでは、アイドルからジャンプ スタートへの遷移を設定します。

  1. Arms State Machine グラフに戻り、Idle ステートからワイヤーを引き出して JumpStart ステートに接続します。

    42-idle-jumpstart.png

  2. 遷移をダブルクリックして編集します。

  3. [My Blueprint] パネルに移動し、Ctrl キーを押しながら IsFalling 変数を グラフ にドラッグして、Get Is Falling ノードを作成します。

  4. Get Is Falling ノードの出力ピンから Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    43-jumpstart-script.png

4.4.3 - ランからジャンプ スタートへの遷移を追加する

このステップでは、ランからジャンプ スタートへの遷移を設定します。

  1. Arms State Machine グラフに戻り、Run ステートからワイヤーを引き出して JumpStart ステートに接続します。

    44-run-jumpstart.png

  2. 遷移をダブルクリックして編集します。

  3. [My Blueprint] パネルに移動し、Ctrl キーを押しながら IsFalling 変数を グラフ にドラッグして、Get Is Falling ノードを作成します。

  4. Get Is Falling ノードの出力ピンから Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    45-run-jumpstart-script.png

4.4.4 - ジャンプ スタートからジャンプ ループの遷移を追加する

このステップでは、ジャンプ スタートからジャンプ ループへの遷移を設定します。

  1. Arms State Machine グラフに戻り、JumpStart ステートからワイヤーを引き出して JumpLoop ステートに接続します。

    46-jumpstart-jumploop.png

  2. 遷移をダブルクリックして編集します。

  3. グラフ 内で右クリックし、TimeRemaining for 'FPP_JumpStart' ノードを検索して選択します。

  4. Time RemainingReturn Value 出力ピンから引き出し、Less Equal ノードを検索して選択します。

  5. Less Equal ノードのもう 1 つの出力フィールドに「0.1」を入力し、次にそのノードの出力ピンからワイヤーを引き出して Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    47-jumploop-script.png

4.4.5 - ジャンプ ループからジャンプ エンドへの遷移を追加する

このステップでは、ジャンプ ループからジャンプ エンドへの遷移を設定します。

  1. Arms State Machine グラフに戻り、JumpLoop ステートからワイヤーを引き出して JumpEnd ステートに接続します。

    48-jumploop-jumpend.png

  2. 遷移をダブルクリックして編集します。

  3. [My Blueprint] パネルに移動し、Ctrl キーを押しながら IsFalling 変数を グラフ にドラッグして、Get Is Falling ノードを作成します。

  4. Get Is Falling ノードの出力ピンから引き出し、Not Boolean ノードを検索して選択します。

  5. Not Boolean ノードの出力ピンから Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    49-jumpend-script.png

4.4.6 - ジャンプ エンドからアイドルへの遷移を追加する

このステップでは、ジャンプ エンドからアイドルへの遷移を設定します。

  1. Arms State Machine グラフに戻り、JumpEnd ステートからワイヤーを引き出して Idle ステートに接続します。

    50-jumpend-idle.png

  2. 遷移をダブルクリックして編集します。

  3. グラフ内で右クリックして、TimeRemaining for 'FPP_JumpEnd' ノードを検索して選択します。

  4. Time RemainingReturn Value 出力ピンから引き出し、Less Equal ノードを検索して選択します。

  5. Less Equal ノードのもう 1 つの出力フィールドに「0.1」を入力し、次にそのノードの Boolean 出力ピンからワイヤーを引き出して Result ノードの Can Enter Transition 入力ピンに接続します。

    Copy Node Graph

    51-idle-script.png

4.5 - アニメーションとキャラクター ブループリントを関連付ける

このチュートリアルの最終セクションでは、作成したアニメーション ブループリントをキャラクター ブループリントと関連付けます。

  1. Arms_AnimBP アニメーション ブループリントをコンパイルし保存してから、閉じます。

  2. コンテンツブラウザ「Blueprints」 フォルダに移動し、BP_FPSCharacter ブループリントを開きます。

  3. [FPSMesh][Components (コンポーネント)] パネルで選択します。

    クリックしてフルサイズで表示

  4. FPSMeshAnim Class を、作成した Arms_AnimBP アニメーション ブループリントに設定します。

  5. Defaults モードの状態から、FPSMesh のトランスフォームの [Location (位置)] を {50, -15, -150} に、[Rotation (回転)」 を {0, 25, 350} に変更します。

    クリックしてフルサイズで表示

  6. 閉じる前に [Compile] ボタンと [Save] ボタンを順にクリックします。

  7. レベル エディタのツールバー[Play (プレイ)] ボタンをクリックします。

    add-character-animation-final-result.gif

    アニメーション ステート マシンでつなげたアニメーションを遷移させて、キャラクターの腕をアニメートしました。

お疲れさまでしたここでは、以下の方法について学習しました。

✓ プロジェクトを設定する ✓ キャラクターを実装する ✓ 発射物を実装する ✓ キャラクターをアニメートする

C++ ファースト パーソン シューター チュートリアルを完了しました。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル