UE5:ヒットしたBoneによって再生されるアニメーションを変更しよう!
Tutorial, 今月の無料アセット Animation, AnimMontage, Blueprint, Hit, HitAnimation, Tutorial, UE, UE4, UE5, UnrealEngine, アニムモンタージュ, アニメーション, アンリアルエンジン, ゲームプログラミング, ゲーム開発, チュートリアル, ヒット, ブループリント, ロジック構築今回はヒットしたボーン毎に再生されるアニメーションを変更する!という処理を組んでいきたいと思います。
やることとしては、ヒットしたBoneの取得!取得したBoneの名前によって通知の切り分けを行って、アニメーションモンタージュを再生できるようにします。
Enumや構造体、データテーブルなどを使うと意外に簡単に実装することができたのですが、最適解なのかについては、現在不明なので、参考程度にしていただければと思います。
使用するアセットについて

仕様するアセットは2025年7月後半に無料で入手することができた「Sci-Fi Dog」を使っていきたいと思います。
こちらのアセットには、基本的なロコモーションなどのアニメーションに加えて攻撃を受けたときのアニメーションもいくつか入っていたので、記事にするのにちょうど良かったです。
まずはEnumの作成

ブループリントで「Switch on Enum名」を使って分岐処理を行うので、まずはEnumから作成していきましょう!
アセットには前後左右のヒットアニメーションがあったので、それぞれに分岐できるように4つ列挙子を追加して名称設定しました!
✅Hit Forward
✅Hit Back
✅Hit Right
✅Hit Left
次に構造体の作成です

Bone名は、データテーブルの行の名前に設定するので、変数を1個追加して1つ前に作成したEnumを型として設定しておきましょう!
Data Tableの作成

ここは少し手間ですが、1つずつ行を追加して名称を設定していきます!読み込んでいる構造体にEnumが設定されているので、Enumは行エディタのタブで名称を変更しましょう!
行の名前については、手作業で設定していきます!

スケルタルメッシュのBoneを反映させるのではなく、Physicsを参照するようにしましょう!頭から尻尾のさきまでで約17個程度あったのでその分行を設定します
名前は右クリックからコピーすることができるので、コピーしてデータテーブルに入れてあげるとスペルミスがなくなるかなと思います。
ブレンドスペースの作成

あんまり必要ないかと思ったんですけど、一応アニメーションも設定しておこうと思います。
ブレンドスペースを作成して、アニメーションをブレンドしておきましょう!
AnimationBPの作成

アニメーションモンタージュを使っていくので、ステートマシンの後に、Default Slotを入れてPoseのResultに接続しましょう!

さっき作成したブレンドスペースを配置してピンを接続しておきましょう!

中に入ってスピードを変数にしておきます!

イベントグラフでスピードだけ参照できるように最低限のノード組だけ行ってみました。。。
ブループリントの作成

ここまできたら後すこしです!
ブループリントクラスを作成して、スケルタルメッシュをコンポーネントタブに配置して、犬のメッシュと作成したAnimatonBPを設定します!
あと、コリジョンがデフォルトだと向こうになっていると思うので、「Block All Dynamic」に変更しておいてください。HitEventを使うので、コリジョンが無効だと何も反応しません。

Hit EventからBreakでどこのBoneにヒットしたかを取得できるようにします!取得したBoneNameによって、対応するEnum名を流してあげたいので、データテーブルの行の名前を参照するインプットピンにBoneNameを接続してあげます!
Branchはアニメーションモンタージュの再生重複を防ぐためにアニメーションが再生されている間は通知が流れないようにするために配置していますが、お好みで未使用でも問題ないかと思います。

後は、Switch on Enumを配置してデータテーブルのアウトプットピンを接続!
これで、Enum名で条件分岐を作成できたので、それぞれにPlay Montageを接続してアニメーションを設定して終わりです!
ゲームをプレイしてみましょう!
DogのHitBoneによって再生されるアニメーションが変わると思います!
本日もお疲れ様でした!
他にはこんな記事もあるよ!
YouTube
YouTubeなどでも、時おり活動をしていますのでよかったらチャンネル登録しておいて貰えると嬉しいです!
上の動画は、Widgetのスライダーを利用してカメラの距離を変更する!という動画です。
その他過去にはゲーム実況やゲーム制作に関する動画など投稿しています!