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

First Person Shooter キャラクターにアニメーションを追加する方法を学びます。

Windows
MacOS
Linux
前提トピック

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

FinalShot.png

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

目標

このセクションでは、First Person Shooter キャラクターにアニメーションを追加する方法を説明します。

目的

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

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

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

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

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

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

ステップ

  • 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 (新規フォルダ)] を選択します。

    RightClickImport.png

  2. この新しいフォルダに「Animations」と名前を付けます。

  3. フォルダをダブルクリックして開きます。

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

    • FPP_Idle.FBX

    • FPP_JumpEnd.FBX

    • FPP_JumpLoop.FBX

    • FPP_JumpStart.FBX

    • FPP_Run.FBX

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

    ImportAnimations.png

  6. 表示されたボックスで、HeroFPP_Skeleton ([Select Skeleton] セクション) を選択して、[Import All (すべてインポート)] をクリックして、すべてのアニメーションをインポートします。

    SelectHeroFPP_Skeleton.png

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

  7. これで 5 つのアニメーションが コンテンツ ブラウザ の「Animations」フォルダに入ります。

    ImportedAnimations.png

  8. [Save] ボタンをクリックしてインポートしたファイルを保存します。

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

  1. コンテンツブラウザの「Animations」フォルダを右クリックします。[Create Advanced Asset (詳細なアセットを作成)] セクションで、[Animation (アニメーション)] を展開し、[Animation Blueprint (アニメーションBP)] を選択します。

    AddNewAnimBP.png

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

    CreateAnimBP.png

  3. 新しい Animation ブループリントに、"Arms_AnimBP" と名前を付けます。

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

    DoubleClickAnimBP.png

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

  1. [My Blueprint] タブで [Add New] ボタンをクリックして、[Variable] を選択します。

    AddingNewVariable.png

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

  3. [My Blueprint] タブで [Add New] ボタンをクリックして、[Variable] を選択します。

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

  5. これで、アニメーションのステートマシンを操作する 2 つのアニメーション遷移変数が用意できました。

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

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

このステップでは、アニメーションのイベント グラフを編集して、ゲームの実行中にアニメーションの遷移変数が正しく設定され、それにより制御されることを確認します。

ステート変数を更新する

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

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

    OpenEventGraph.png

  3. グラフを右クリックして コンテキスト メニュー を表示します。

  4. コンテキスト メニュー の検索欄に「Update」と入力して、ノードを追加するために [Event Blueprint Update Animation] をクリックします。

    Event Blueprint Update Animation ノードは、アニメーションが更新されるたびにステート変数を更新し、ゲームステートと常に同期されるようにします。
    EventBlueprintUpdateAnimationNode.png

  5. グラフを右クリックして コンテキスト メニュー を表示します。

  6. コンテキスト メニュー の検索欄に「Owner」と入力して、ノードを追加するために [Try Get Pawn Owner] をクリックします。

    TryGetPawnOwnerBP_Node.png

  7. 出力ピンを引き出して、Cast to Characterコンテキスト メニュー から選択します。

    CastToCharacterContextMenu.png

  8. Event Blueprint Update Animation の出力実行ピンを Cast to Character の入力実行ピンに接続します。

    ConnectedCastToCharacterNode.png

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

    GetCharacterMovementNode.png

  10. Character Movement 出力ピンからドラッグして Get Movement Mode を選択します。

    GetMovementMode.png

キャラクターの移動のクエリー

  1. Movement Mode 出力ピンから引き出して、Equal (Enum) を選択します。

    EqualEnumNode.png

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

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

    SelectFalling.png

  2. [My Blueprint] タブで [IsFalling] を Alt キーを押しながらクリックしてグラフにドラッグして、Set Is Falling ノードを作成します。

  3. Cast to Character ノードのラベル付けされていない出力実行ピンを Set Is Falling ノードの入力実行ピンと接続します。そして Equal (Enum) ノードの出力 Boolean データ ピンを、Set Is Falling ノードの入力 Boolean データ ピンに接続します。

    ConnectedIsFalling.png

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

  1. Cast To Character ノードに戻り、再度 As Character ピンからドラッグします。今回は Get Velocity ノードから選択します。

    GetVelocityNode.png

  2. キャラクターが静止していない場合、ベロシティ ベクターの長さはゼロよりも大きくなります。従って Return Value ベクター出力ピンからドラッグして Vector Length を選択し、そのノードをグラフに追加します。

    VectorLength.png

  3. Return Value float 出力ピンを引き出して、 > (float) ノードを選択します。

    GreaterThan.png

  4. [My Blueprint] タブで IsRunning を Alt キーを押しながらクリックしてグラフへドラッグして、Set Is Running ノードを作成します。

    IsRunning.png

  5. Set Is Falling ノードの出力実行ピンを Set Is Running ノードの入力実行ピンと接続します。そして > (float) ノードの出力 Boolean ピンを、Set Is Running ノードの入力 Boolean ピンに接続します。

    ConnectedIsRunning.png

  6. Event Graph は以下のようになります。

    画像をクリックするとズームインします。

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

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

  1. [My Blueprint] タブで、 [AnimGraph] をダブルクリックして開きます。

    AnimGraph.png

  2. グラフを右クリックして、コンテキスト メニュー[State Machines >Add New State Machine...] を選択します。

    AddNewSM.png

  3. [My Blueprint] タブで、[New State Machine] を右クリックして、「Arms State Machine」という名前を付けます。

    NewArmsStateMachine.png

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

    ConnectedArmsStateMachine.png

  5. Arms State Machine ノードをダブルクリックして、編集するためにそのグラフを開きます。

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

このステップでは、ステート グラフに以下の 5 種類のステートを追加します。

  • Idle

  • Run

  • JumpStart

  • JumpEnd

  • JumpLoop

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

    AddState.png

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

  3. ステートの編集を開始するには、ステートをダブルクリックします。

  4. グラフ エリアで右クリックして、コンテキスト メニュー で「Idle」を検索します。

  5. Play FPP_Idle をクリックしてこのノードを挿入します。

    PlayIdle.png

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

    ConnectedIdleNode.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)

  7. 終了後、[Arms State Machine] グラフは以下の画像のようになります。

    画像をクリックするとズームインします。

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

  8. Entry ノードから Idle ステートへワイヤーをドラッグします。

    ConnectEntrytoIdle.png

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

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

  1. 遷移を生じさせるために Idle ステートから Run ステートへワイヤーをドラッグします。

    WireIdletoRun.png

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

  3. [My Blueprint] タブで IsRunning をコントロール キーを押しながらクリックしてグラフにドラッグして、 Get Is Running ノードを作成します。

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

    IsRunningtoResult.png

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

  5. [Arms State Machine] グラフへ戻って、 Run ステートから Idle ステートへワイヤーをドラッグします。

    WireRuntoIdle.png

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

  7. [My Blueprint] タブで IsRunning をコントロール キーを押しながらクリックしてグラフにドラッグして、 Get Is Running ノードを作成します。

  8. Get Is Running ノードの出力 Boolean ピンを引き出して、 Not Boolean ノードを作成します。

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

    IsNotRunningtoResult.png

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

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

  1. [Arms State Machine] グラフへ戻って、 Idle ステートから JumpStart ステートへワイヤーをドラッグします。

    IdletoJumpStart.png

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

  3. [My Blueprint] タブで [IsFalling] をコントロールキーを押しながらクリックしてグラフにドラッグして、 Get Is Falling ノードを作成します。

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

    IsFallingtoResult.png

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

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

  1. [Arms State Machine] グラフへ戻って、 Run ステートから JumpStart ステートへワイヤーをドラッグします。

    RuntoJumpStart.png

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

  3. [My Blueprint] タブで [IsFalling] をコントロールキーを押しながらクリックしてグラフにドラッグして、 Get Is Falling ノードを作成します。

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

    IsFallingtoResult.png

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

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

  1. [Arms State Machine] グラフへ戻って、 JumpStart ステートから JumpLoop ステートへワイヤーをドラッグします。

    JumpStarttoJumpLoop.png

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

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

  4. Time Remaining 出力ピンを引き出して、コンテキスト メニュー を使って <= (float) ノードを追加します。

  5. <= (float) ノードのもう 1 つのフィールドに「0.1」を入力し、そのノードの出力ピン (Boolean) から Result ノードの Can Enter Transition 入力ピンに接続します。

    TimeRemaining.png

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

このステップでは、Jump Loop から Jump End の遷移を設定します。

  1. [Arms State Machine] グラフへ戻って、 JumpLoop ステートから JumpEnd ステートへワイヤーをドラッグします。

    JumpLooptoJumpEnd.png

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

  3. [My Blueprint] タブで [IsFalling] をコントロールキーを押しながらクリックしてグラフにドラッグして、 Get Is Falling ノードを作成します。

  4. Get Is Falling ノードの出力 Boolean ピンを引き出して、 Not Boolean ノードを作成します。

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

    IsNotFalling.png

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

このステップでは、Jump End から Idle への遷移を設定します。

  1. [Arms State Machine] グラフへ戻って、 JumpEnd ステートから Idle ステートへワイヤーをドラッグします。

    JumpEndtoIdle.png

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

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

  4. Time Remaining 出力ピンを引き出して、コンテキスト メニュー を使って <= (float) ノードを追加します。

  5. <= (float) ノードのもう 1 つのフィールドに「0.1」を入力し、そのノードの出力ピン (Boolean) から Result ノードの Can Enter Transition 入力ピンに接続します。

    TimeRemaining.png

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

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

  1. Arms_AnimBP Animation ブループリントをコンパイルおよび保存してから閉じます。

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

  3. [Components] タブで FPSMesh を選択します。

    LocateFPSMesh.png

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

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

  6. ブループリントをコンパイルおよび保存してから閉じます。

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

    FinalGif.gif

    アニメーションのステートマシーンでまとめて接続したアニメーションの遷移に従い、アームがアニメートされます。

これで終了です。ここでは、以下の方法について学習しました。

✓ プロジェクトのセットアップ
✓ キャラクターの実装
✓ 発射物の実装
✓ キャラクターのアニメート

C++ の FPS チュートリアルはこれで終わりです。

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