👊

[Unreal Engine 5] 殴って吹き飛ばす ( Radial Force / Niagara )

2025/02/04に公開

殴って吹き飛ばす(ように見せる)。
実際には手の動きに合わせて爆発を起こしているような実装となる。

動作確認環境

Unreal Engine 5.5.2
Windows 11 23H2

手順

Third Person Template をベースに進める

アニメーションの準備

  • 動画の手順を参考にして Mixamo から適当な Animation を Import する
    • 今回は Flying Knee Punch Combo を使用
      • このような移動が発生する Animation では、Root Motion を使用する
      • VRM からインポートしたモデルに対して適用したい場合は、一度 Manny に Retarget してから目的のモデルに対して Retarget する

参考:
https://www.youtube.com/watch?v=1GvTBr99AwY

Radial Force

  • Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter をダブルクリック
    • +Add をクリックして Radial Force を追加
    • アニメーション中の手の位置と合わせるため、今回は前方に 60 ずらした
    • 衝撃が発生する範囲を Radius で指定。今回は 500.0 とした
    • 衝撃力を Impulse Strength で指定。今回は 100000.0 とした
    • 常に発生する力を Force Strengh で指定。今回は 0.0 とした
    • Ignore Owning Actor を True にする。Root Motion を使用していない場合、この設定をしていないとプレイヤー自身も吹き飛ばされる
    • 適当なタイミングで Fire Impluse を呼ぶ。今回はアニメーション開始から 1.3 秒経過後とした




参考:https://arayz.hatenablog.com/entry/2018/10/10/163450

Niagara System

  • Edit → Pluins で NiagaraFluids にチェックを入れてエディタを再起動

  • 適当な場所に Niagara System を作成。今回は Grid3D_Gas_DustExplosion を選択

  • 作成した Niagara System をダブルクリックし、User ParameterDrawBounds のチェックを外す

  • 適当なタイミングで Spawn System at Location を呼ぶ。今回は Fire Impluse と同時とした

    • Spawn System at LocationSystem Template に作成した Niagara System を設定
    • 生成された NiagaraComponet を変数に記憶し、次回の生成時に Destroy Component を呼ぶ




コントローラーの設定

  • Content/ThirdPerson/Input/Actions に適当な Input Action を追加、ダブルクリックする

    • Value TypeDigital(bool) に設定
    • TriggersPressedReleased を追加
  • Content/ThirdPerson/Input/IMC_Default をダブルクリック

    • 追加した Inpout Action の横の + をクリックして設定を追加する
    • アイコンのついたボタンをクリックし、任意のボタンを押すと Inpout Action と紐づけられる
  • BlueprintEditor の Event Graph 上で右クリックして追加した Inpout Action の名前を入力することでノードを追加できる




Blueprint の全体図

Discussion