サードパーソン ブループリント ゲーム入門 (19) UE4 でアニメーション モンタージュを再生する

ビデオの内容紹介
これまで準備してきたアニメーション モンタージュを再生するために、アニメーションブループリントのセットアップの続きを行います。具体的には、キャラクターの状態に応じてパンチのアニメーション モンタージュを再生できるようにします。

原題 Introduction to Third Person Blueprint game – 19 – Playing Our Animation Montage in UE4

[1]Punch イベントを作る
前回までは、アニメーション ブループリントで次のように組みました。
19-1
まず、スペースでイベントを作ります。右クリックして、[カスタム イベントを追加] を選択します。
19-2
イベントの名前は Punch にします。
19-3
このイベントが呼ばれたら、モンタージュを再生するようにします。そのためには、Montage Play (モンタージュ再生) を配置します。
19-4
Punc イベントの実行ピンとつないで、[Montage to Play] (再生すべきモンタージュ) をクリックします。
19-5
PunchingMontage を選択します。(これしかありません)
19-6
このアニメーションはかなりスローなので、再生速度をあげます。右上で [アニメーション] モードにしてから、右下の PunchingMontage をダブルクリックして、左下の Rate を 1.0 から 1.5 にします。
19-7
これでイベントの設定は終わりです。
19-8

[2] イベントの呼び出し側を組む
今作成したイベントを呼び出して使うブループリントを組みます。仮に下の画像の右端にある SET のすぐ後ろでイベントを呼び出してみます。
19-1
まず、スペースで右クリックして Punch を検索欄に入れて、[関数呼び出し] の下にある Punch をクリックします。(「関数」となっていますが、イベントは基本的に関数です。ただしイベントには関数にはない機能があります。たとえば、Delay ノードを使えるなど。)
19-9
つなげてみます。
19-10
これはどのような動作になるかというと、先のグラフ全体の画像の左上あたりにある [イベント Blueprint Update Animation] がアニメーションを更新するたびに、IsPunching? 変数に値がセットされて、そのまま Punch イベントが呼び出されるだけです。これに Branch ノードをはさめて、True であれば、Punch イベントが呼び出されることにできますが、それでも、更新のたびに True であれば Punch イベントが呼び出されるのでまずいです。したがって、改変します。まず、DoOnce を使います。
19-11
DoOnce の役割は、その名のとおり、何かを一度だけ実行させることにあります。[イベント Blueprint Update Animation] がいくら更新しても (いくらこの DoOnce を通過しても)、一度しか実行ピン右から実行信号が発信されません。
19-15
ただし、Reset 実行ピンに何かをつなげれば、その状態をリセットすることができます。つまり、まだ一度も実行されていない状態に戻すことができます。

なお、Start Closed はチェックを入れておきます。これは、実行の流れが閉じている (実行されていない状態) から始まるということを意味します。

次にその前に [ブランチ] ノードを配置します。そして、この [ブランチ] の Condition (条件) に IsPunching? 変数をつなげます。また、True 実行ピンから DoOnce の上実行ピンに、False 実行ピンから DoOnce の Reset 実行ピンに接続します。
19-12

ここでグラフの流れをざっと見てみましょう。

グラフの意味

19-16

このグラフ全体は、[イベント Blueprint Update Animation] ノードがアニメーションを更新すると必ず、実行パルスがワイヤを通って流れます。

ここで、ゲームのプレイヤーがマウスの左ボタンをクリックしたとします。するとその後のアニメーション更新で、そのことがキャッチされます。具体的には、MyCharacter のプロパティ (変数) である IsPunching? が True となっていることをこのアニメーション ブループリントが感知します。

その関数の中身 (値) は True (つまりパンチしている) なので、[ブランチ] の True 実行ピンに制御が流れて、[DoOnce] ノードが実行されます。

[DoOnce] は [Punch] (呼び出し) ノードを実行します (以下は、[Punch] イベントに制御が移ります)。これ以降は、いくら [DoOnce] を呼び出しても (IsPunching? が True であっても) [Punch] ノードは実行されません。(ただし、[Punc] イベント側では、アニメーションの再生をストップさせる機能がまだ備わっていないので、ずっと再生され続けます。)

ここで、プレイヤーがマウスの左ボタンをリリースすると、どうなるでしょうか?IsPunching? が False になり (パンチ状態ではなくなる)、[DoOnce] ノードの Reset 実行ピンに制御が渡り、[DoOnce] ノードの状態が、まだ一度も実行されていない状態にリセットされます。つまり、再びプレイヤーが左ボタンを押すと、また [DoOnce] ノードが実行されることになります。

[3] テストする
ここまでの準備で、いよいよテストしてみます。
19-13
左ボタンを押すと…しかし、大将はたたずむだけでした。
大切な設定がまだ抜けてました。以下、次回です。おつかれさまでした!


シェアする

  • このエントリーをはてなブックマークに追加

フォローする