Choose your operating system:
Windows
macOS
Linux
このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。
目標
このセクションでは、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 - キャラクターをアニメートする
このステップでは、アニメーションをゲームに追加します。
アニメーションをインポートする
開始する前に、次のリンクからサンプル アニメーションをダウンロードして展開してください。
-
コンテンツ ブラウザ を右クリックして、 [New Folder (新規フォルダ)] を選択します。
-
この新しいフォルダに「Animations」と名前を付けます。
-
フォルダをダブルクリックして開きます。
-
次の 5 つのローカル アニメーション ファイルを見つけます。
-
FPP_Idle.FBX
-
FPP_JumpEnd.FBX
-
FPP_JumpLoop.FBX
-
FPP_JumpStart.FBX
-
FPP_Run.FBX
-
-
「Animations」フォルダ内で右クリックして、 [Import to /Game/Animations/...] をクリックしてアニメーションのインポートを開始します。
-
表示されたボックスで、 HeroFPP_Skeleton ( [Select Skeleton] セクション) を選択して、 [Import All (すべてインポート)] をクリックして、すべてのアニメーションをインポートします。
正しいあて先のメッシュを選択していることを確認してから、アニメーションをインポートしてください。正しくインポートできないと、後でアニメーションをマップするときに問題が発生することがあります。
-
これで 5 つのアニメーションが コンテンツ ブラウザ の「 Animations 」フォルダに入ります。
-
[Save] ボタンをクリックしてインポートしたファイルを保存します。
Animation ブループリントを作成する
-
コンテンツブラウザの「Animations」フォルダを右クリックします。 [Create Advanced Asset (詳細なアセットを作成)] セクションで、 [Animation (アニメーション)] を展開し、 [Animation Blueprint (アニメーションBP)] を選択します。
-
[AnimInstance] を親クラスとして選択し、 [HeroFPP_Skeleton] をターゲット スケルトンとして選択します。
-
新しい Animation ブループリントに、"Arms_AnimBP" と名前を付けます。
-
[Arms_AnimBP] を ダブルクリック して ブループリント エディタ を開きます。
ステートマシンの遷移変数を追加する
-
[My Blueprint] タブで [Add New] ボタンをクリックして、 [Variable] を選択します。
-
変数を [Boolean] に (デフォルトで設定されていることがありますが、 [Details (詳細)] パネルで確認) して、「IsRunning」と名前を付けます。
-
[My Blueprint] タブで [Add New] ボタンをクリックして、 [Variable] を選択します。
-
変数を Boolean にして、「IsFalling」 という名前を付けます。
-
これで、アニメーションのステートマシンを操作する 2 つのアニメーション遷移変数が用意できました。
-
Arms_AnimBP を開いたまま、次のセクションに進みます。
4.2 - イベント グラフを設定する
このステップでは、アニメーションのイベント グラフを編集して、ゲームの実行中にアニメーションの遷移変数が正しく設定され、それにより制御されることを確認します。
ステート変数を更新する
-
Arms_AnimBP を開きます (開いていない場合)。
-
[My Blueprint] タブの EventGraph をダブルクリックしてイベントグラフを開きます。
-
グラフを右クリックして コンテキスト メニュー を表示します。
-
コンテキスト メニュー の検索欄に「Update」と入力して、ノードを追加するために [Event Blueprint Update Animation] をクリックします。
Event Blueprint Update Animation ノードは、アニメーションが更新されるたびにステート変数を更新し、ゲームステートと常に同期されるようにします。
-
グラフを右クリックして コンテキスト メニュー を表示します。
-
コンテキスト メニュー の検索欄に「Owner」と入力して、ノードを追加するために [Try Get Pawn Owner] をクリックします。
-
出力ピンを引き出して、 Cast to Character を コンテキスト メニュー から選択します。
-
Event Blueprint Update Animation の出力実行ピンを Cast to Character の入力実行ピンに接続します。
-
As Character 出力ピンから引き出して、 Get Character Movement を選択します (場合により、このノードを見つけるために [Context Sensitivity (状況に合わせた表示)] をオフにする)。
-
Character Movement 出力ピンからドラッグして Get Movement Mode を選択します。
キャラクターの移動のクエリー
-
Movement Mode 出力ピンから引き出して、 Equal (Enum) を選択します。
キャラクターが落下しているかを判定する
-
Equal (Enum) ノードのドロップダウンの値を Falling に設定します。
-
[My Blueprint] タブで [IsFalling] を Alt キーを押しながらクリックしてグラフにドラッグして、 Set Is Falling ノードを作成します。
-
Cast to Character ノードのラベル付けされていない出力実行ピンを Set Is Falling ノードの入力実行ピンと接続します。そして Equal (Enum) ノードの出力 Boolean データ ピンを、 Set Is Falling ノードの入力 Boolean データ ピンに接続します。
キャラクターが走っているかを判定する
-
Cast To Character ノードに戻り、再度 As Character ピンからドラッグします。今回は Get Velocity ノードから選択します。
-
キャラクターが静止していない場合、ベロシティ ベクターの長さはゼロよりも大きくなります。従って Return Value ベクター出力ピンからドラッグして Vector Length を選択し、そのノードをグラフに追加します。
-
Return Value float 出力ピンを引き出して、 > (float) ノードを選択します。
-
[My Blueprint] タブで IsRunning を Alt キーを押しながらクリックしてグラフへドラッグして、 Set Is Running ノードを作成します。
-
Set Is Falling ノードの出力実行ピンを Set Is Running ノードの入力実行ピンと接続します。そして > (float) ノードの出力 Boolean ピンを、 Set Is Running ノードの入力 Boolean ピンに接続します。
-
Event Graph は以下のようになります。
4.3 - アニメーション ステート マシンを追加する
このステップでは、新規作成した変数を活用するステート マシンを作成します。
-
[My Blueprint] タブで、 [AnimGraph] をダブルクリックして開きます。
-
グラフを右クリックして、 コンテキスト メニュー で [State Machines >Add New State Machine...] を選択します。
-
[My Blueprint] タブで、 [New State Machine] を右クリックして、「Arms State Machine」という名前を付けます。
-
「Arms State Machine」ノードの出力実行ピンから Final Animation Pose ノードの Result 入力実行ピンに接続します。
-
Arms State Machine ノードをダブルクリックして、編集するためにそのグラフを開きます。
4.4 - アニメーション遷移ステートを追加する
このステップでは、ステート グラフに以下の 5 種類のステートを追加します。
-
Idle
-
Run
-
JumpStart
-
JumpEnd
-
JumpLoop
-
グラフを右クリックして、コンテキスト メニューで [Add State...] を選択します。
-
ステートに 「Idle」 と名前を付けます。
-
ステートの編集を開始するには、ステートをダブルクリックします。
-
グラフ エリアで右クリックして、 コンテキスト メニュー で「Idle」を検索します。
-
Play FPP_Idle をクリックしてこのノードを挿入します。
-
Play FPP_Idle ノードの出力実行ピンを Output Animation Pose ノードの Result 入力実行ピンに接続します。
以下の残りの 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)
-
-
終了後、 [Arms State Machine] グラフは以下の画像のようになります。
各ステートには、それぞれの Final Animation Pose ノードに接続された Play ノードが含まれている必要があります。
-
Entry ノードから Idle ステートへワイヤーをドラッグします。
4.4.1 - アイドルからラン、またはその逆の遷移を追加する
このステップでは、アイドルからラン、またはその逆の遷移を設定します。これによりキャラクターが動き始めたとき、ステート マシンは Idle から Run に遷移します。
-
遷移を生じさせるために Idle ステートから Run ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
[My Blueprint] タブで IsRunning をコントロール キーを押しながらクリックしてグラフにドラッグして、 Get Is Running ノードを作成します。
-
Get Is Running ノードの出力ピンを、 Result ノードの Can Enter Transition 入力ピンに接続します。
キャラクターが動くのを止めると、ステートマシーンは Run ステートから Idle ステートに遷移します。
-
[Arms State Machine] グラフへ戻って、 Run ステートから Idle ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
[My Blueprint] タブで IsRunning をコントロール キーを押しながらクリックしてグラフにドラッグして、 Get Is Running ノードを作成します。
-
Get Is Running ノードの出力 Boolean ピンを引き出して、 Not Boolean ノードを作成します。
-
Not Boolean ノードの出力ピンを、 Result ノードの Can Enter Transition 入力ピンに接続します。
4.4.2 - アイドルからジャンプ スタートへの遷移を追加する
このステップでは、アイドルからジャンプ スタートへの遷移を設定します。
-
[Arms State Machine] グラフへ戻って、 Idle ステートから JumpStart ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
[My Blueprint] タブで [IsFalling] をコントロールキーを押しながらクリックしてグラフにドラッグして、 Get Is Falling ノードを作成します。
-
Get Is Falling ノードの出力 Boolean ピンを、 Result ノードの入力 Boolean の Can Enter Transition ピンに接続します。
4.4.3 - ランからジャンプ スタートへの遷移を追加する
このステップでは、ランからジャンプ スタートへの遷移を設定します。
-
[Arms State Machine] グラフへ戻って、 Run ステートから JumpStart ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
[My Blueprint] タブで [IsFalling] をコントロールキーを押しながらクリックしてグラフにドラッグして、 Get Is Falling ノードを作成します。
-
Get Is Falling ノードの出力 Boolean ピンを、 Result ノードの入力 Boolean の Can Enter Transition ピンに接続します。
ジャンプ スタートからジャンプ ループの遷移を追加する
このステップでは、ジャンプ スタートからジャンプ ループへの遷移を設定します。
-
[Arms State Machine] グラフへ戻って、 JumpStart ステートから JumpLoop ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
グラフを右クリックして、 TimeRemaining for 'FPP_JumpStart' ノードを検索して選択します。
-
Time Remaining 出力ピンを引き出して、 コンテキスト メニュー を使って
<= (float)
ノードを追加します。 -
<= (float)
ノードのもう 1 つのフィールドに「0.1」を入力し、そのノードの出力ピン (Boolean) から Result ノードの Can Enter Transition 入力ピンに接続します。
4.4.5 - ジャンプ ループからジャンプ エンドへの遷移を追加する
このステップでは、Jump Loop から Jump End の遷移を設定します。
-
[Arms State Machine] グラフへ戻って、 JumpLoop ステートから JumpEnd ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
[My Blueprint] タブで [IsFalling] をコントロールキーを押しながらクリックしてグラフにドラッグして、 Get Is Falling ノードを作成します。
-
Get Is Falling ノードの出力 Boolean ピンを引き出して、 Not Boolean ノードを作成します。
-
Not Boolean ノードの出力ピンを、 Result ノードの Can Enter Transition 入力ピンに接続します。
4.4.6 - ジャンプ エンドからアイドルへの遷移を追加する
このステップでは、Jump End から Idle への遷移を設定します。
-
[Arms State Machine] グラフへ戻って、 JumpEnd ステートから Idle ステートへワイヤーをドラッグします。
-
遷移をダブルクリックして編集します。
-
グラフを右クリックして、 TimeRemaining for 'FPP_JumpEnd' ノードを検索して選択します。
-
Time Remaining 出力ピンを引き出して、 コンテキスト メニュー を使って
<= (float)
ノードを追加します。 -
<= (float)
ノードのもう 1 つのフィールドに「0.1」を入力し、そのノードの出力ピン (Boolean) から Result ノードの Can Enter Transition 入力ピンに接続します。
4.5 - アニメーションとキャラクター ブループリントを関連付ける
このチュートリアルの最終セクションでは、作成したアニメーション ブループリントをキャラクター ブループリントと関連付けます。
-
Arms_AnimBP Animation ブループリントをコンパイルおよび保存してから閉じます。
-
コンテンツブラウザ で 「Blueprints」 フォルダへ移動して、 BP_FPSCharacter ブループリントを開きます。
-
[Components] タブで FPSMesh を選択します。
-
FPSMesh の Anim Class を、作成した Arms_AnimBP アニメーション ブループリントに設定します。
-
Defaults モードの状態から、 FPSMesh のトランスフォームの [Location (位置)] を {50, -15, -150} に、 [Rotation (回転)」 を {0, 25, 350} に変更します。
-
ブループリントをコンパイルおよび保存してから閉じます。
-
レベル エディタのツールバー で、 [Play (プレイ)] ボタンをクリックします。
これで終了です。ここでは、以下の方法について学習しました。
✓ プロジェクトのセットアップ
✓ キャラクターの実装
✓ 発射物の実装
✓ キャラクターのアニメート
C++ の FPS チュートリアルはこれで終わりです。