Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 AnimMontageのブランチポイントでのハマりポイントについて

UE4.6あたりからずっとかもしれませんが、AnimMontageのブランチポイントの扱いが変わっており、2015/09/23現在の公式ドキュメントを見てもその説明がありません。

自分も先日これにハマってしまい、恐らくかなりの人がハマる可能性があるのでその情報をまとめておきます。

 公式ドキュメントの説明について

公式ドキュメントのAnimMontageの解説をみてみます。

AnimMontage | Unreal Engine

f:id:alwei:20150923143846j:plain

本来は分岐点トラック(Branch Point)表示があるはずですが、UE4.9現在にそのようなものはありません。スロット名の入力部分も変更されています。日本語だけかと思いきや、英語の場合でも同様です。

f:id:alwei:20150923144018j:plain

ではどこにいったのか?

通知(Notifies)領域へ移動

実はまとめて通知(Notifies)領域へ移動しています。

f:id:alwei:20150923144332j:plain

ここで以前ブランチポイント扱いだったモノを選択すると、右側の詳細に"Event"の"Montage Tick Type"というのが出来ており、ここから"Queued"だと通常の通知イベント、"Branching Point"にするとブランチイベントとして作成されます。

また4.9からエレメントタイミングというトラックも追加されています。今回は特に影響のない部分なので解説は割愛しておきますので、知りたい方は公式ドキュメントまで。

f:id:alwei:20150923144635j:plain

確かに以前の仕様だと明らかに通常の通知イベントとブランチポイントは違いがわかりにくかったので、このような仕様になったのかもしれません。新規でブランチポイントを追加する場合も通常の通知イベントを追加してからブランチポイントに変更する必要があるので注意しましょう。

そもそも通知イベントとブランチポイントの違いって?

これがそもそも一番わかりにくいかもしれませんが、通知イベントは"非同期"イベントなのに対して、ブランチポイントは完全な"同期"イベントという事です。通知イベントの方が軽量ですが、大量の通知が行なわれた際には時間がズレて実行される可能性があります。

その分ブランチポイントの呼出は確実に指定時間通りに実行されます。格闘ゲームを作っている時に入力タイミングやコンボの繋ぎを作る際に確実なタイミングを取る必要がありますので、そういった時にブランチポイントでイベントを作成が役立ちます。ただし大量に実行されたりする場合には負荷がかかってしまうという事に注意してください。