公開日:2025/06/15  更新日:2025/06/15

UE5のパンチ攻撃について

UE5でパンチ攻撃を行いたいことは多いはず。格闘戦主体のゲームではもちろん、TPSやFPSといった銃撃戦主体のゲームでも大抵パンチは実装されている。

これまでの以下の記事で銃を持たせ、エイムし弾を撃ちダメージを与えられるようにしており、この記事ではこれらをベースに新たに操作キャラがパンチ攻撃を行えるようにしていこうと思う。

銃の持ち方

ブレンドスペース

エイムオフセット

視点変更

弾を撃つ

ダメージ処理

死亡処理

先に確認してみてほしい。

Get・SetやSequenceやBranchといった基礎的なノードがわからない場合は先に以下記事を確認してほしい。

アンリアルエンジンのノードの一覧

UE5のパンチ攻撃の目次

パンチ攻撃アニメーションの準備
パンチの攻撃判定の長さを指定
パンチのコリジョンを設定
パンチ攻撃のキー入力処理作成
インターフェース作成
Animnotify作成
目次にもどる

パンチ攻撃アニメーションの準備

パンチ攻撃アニメーションとして、無料のアニメーションが多数あるMixamoからとってくる。

以下からMixamoのサイトに入り、Animationタブを選択し、punchと検索すれば様々なパンチのアニメーションアセットが出てくる。

Mixamo

MixamoConverterを使って好きなアニメーションを取得し、自分のプロジェクトにインポートしよう。

MixamoConverterの使い方がわからない場合は以下の記事で紹介しているので確認してほしい。

MixamoConverterの使い方
目次にもどる

パンチの攻撃判定の長さを指定

パンチのアニメーションは手を後ろに下げてからパンチを繰り出し、その後は元の姿勢に戻る。一番最初やパンチを打ち終わった後に攻撃判定があるのは不自然だ。

UE5のパンチ攻撃

そこでパンチの打ち始めから打ち終わりまでを攻撃判定に指定できるように設定を行っていく。

パンチ攻撃アニメーションに判定の長さを設定するためのAnimnotifyの作成を行っていく。

コンテンツドロワーの任意の場所で右クリックしブループリント→ブループリントクラスと選択。

UE5のパンチ攻撃

以下の画面でAnimNotifyStateを検索して出し、選択ボタンを押して作成する。ファイルの名前をANS_Attackとする。

UE5のパンチ攻撃

先ほどプロジェクトに入れたパンチ攻撃アニメーションシーケンスファイル(自分の場合はPunching_UE_Anim)を選択して右クリックし、作成する→AnimMontageのように選択。できたファイルの名前をAM_Punching_UEとする。

UE5のパンチ攻撃

AM_Punching_UEを開く。

UE5のパンチ攻撃

通知の1の部分で右クリックし、通知ステートの追加を選び、ANS_Attackを選択する。

UE5のパンチ攻撃

追加されたANS_Attackはドラッグ&ドロップすることで長さを変更可能。シフトキーを押しながらドラッグ&ドロップするとキャラのアニメーションの動きに合わせてANS_Attackの長さを変更でき非常に便利だ。

UE5のパンチ攻撃

パンチの打ち始めからANS_Attackが始まり、打ち終わりでANS_Attackが終わるようにすればOKだ。

目次にもどる

パンチのコリジョンを設定

BP_Player(操作キャラのブループリント)を開く。

コンボーネントタブで追加を押し、SphereCollisionを選択する。

UE5のパンチ攻撃

できたSphereをMeshの子として配置する。名前をRightPunchCollisionとする。

UE5のパンチ攻撃

RightPunchCollisionを選択して、詳細タブのソケットの親ソケットの項目をhand_r(右手)とする。

UE5のパンチ攻撃

これでRightPunchCollisionが右手を原点として配置される。

RightPunchCollisionの大きさを右手を覆う程度に調整する。以下のようにトランスフォームの拡大・縮小で鍵部分をタップし、以下のように鍵をかけたマーク(XYZ方向に均一に拡大・縮小)にして、調整するのがおすすめ。

UE5のパンチ攻撃

だいたい以下のようにCollisionが設定できればOKだ。

UE5のパンチ攻撃

次にコリジョン設定を行う。引き続きコンポーネントタブのRightPunchCollisionを選択した状態で、詳細タブのコリジョンプリセットを変更していく。

以下のようにコリジョンプリセットをCustomにし、Collision EnabledはNo Collisionにする(最初はコリジョンはない状態にしておき攻撃時にこの項目を変更する想定)。応答はEnemyだけ「オーバーラップ」、残りは「無視するにチェックをつける」(敵にのみ操作キャラの攻撃は当たればいい)。

UE5のパンチ攻撃

BP_Playerの親クラスであるBP_Characterを開き、変数を追加する。

型は球面コリジョン。名前はAttackCollisionとする。

UE5のパンチ攻撃

後述するが、この変数にRightPunchCollisionを入れて使っていくことになる。

目次にもどる

パンチ攻撃のキー入力処理作成

引き続きBP_Playerでパンチ攻撃の処理を作っていく。今回はCキーでパンチが出るようにする。

Enhanced Inputでのキー入力についてわからない場合は先に以下の記事を確認してほしい。

Enhanced Inputでのキー入力

コンテンツドロワーの任意の場所で右クリックし、入力→入力アクションのように選択してInput Actionファイルを作成する。

アンリアルエンジンのキー入力

ファイルの名前はIA_Punchとする。ダブルクリックして開く。

以下のようにValue Typeの項目をDigital(bool)に変更する(恐らく既になっている)。Triggersを追加しておく(none)のままでOK。

UE5のキー入力

続いて、IMC_Defaultを開く。ここにIA_punchを追加し、Cキーで動くようにする。

UE5のパンチ攻撃

BP_Player(操作キャラのブループリント)を開く。

イベントグラフ上でIA_Punchを検索して出す。

UE5のパンチ攻撃

以下のようにノードをつなげる。

UE5のパンチ攻撃

Set VisibilityでWeaponのメッシュを非表示にしている(New Visibilityのチェックを外すと非表示)。殴っている時に銃があると不自然なので消している。

続いてAttackCollisionににRightPunchCollisionをセット。

AttackCollisionのセットに続ける形で以下のノードを配置する。

UE5のパンチ攻撃

Play Anim Montageで先ほど作成したAM_Punching_UEを指定して再生できるようにする。

Return Valueからアニメーションモンタージュの長さが出力されるので、その間Delayで待ち、再びSet Visibilityのノードを配置しNew Visibilityにチェックを入れることで、パンチのアニメーションが終わったら再び銃を表示することができる。

RightPunchCollisionを選択し右クリックし、イベントを追加→On Component Begin Overlapのように選択。

UE5のパンチ攻撃

以下のように以前作成したダメージ処理(インターフェース)の処理が行われるようにする。

UE5のパンチ攻撃

コンポーネントタブでBP_Playerを選択し、デフォルトのATKを設定。今回は35とした。

UE5のパンチ攻撃
目次にもどる

インターフェース作成

ANS_AttacKにアニメーションモンタージュが再生されてアニメーション通知がきたときの処理を書く予定なのだが、そのアニメーションを行っているキャラをとってくるためにインターフェースの設定を行う。

以前の記事でダメージ処理を作るためにインターフェースのI_Characterを作成している。

ダメージ設定のインターフェース作成

このI_Characterを開き、新たに関数を追加し名前をGet BP Characterとする。

UE5のパンチ攻撃

Get BP Characterを選択し、アウトプットを追加しBP Character(操作キャラ・敵の親クラス)の型で検索する。名前をBPcharacterとする。

UE5のパンチ攻撃

コンパイルする。

BP_Characterを開き、インターフェースのGet BPcharacterを選択する。

UE5のパンチ攻撃

以下のようにReturn Nodeの入力BPcharacterからワイヤーを伸ばし Selfと検索してGet a reference to selfを選択する。

UE5のパンチ攻撃

以下のようにノードを設置できればOKだ。コンパイルする。

UE5のパンチ攻撃
目次にもどる

Animnotify作成

ANS_AttacKを開く。

オーバーライドを選択しReceived_NotifyBeginを選択して作成する(先ほどAM_Punching_UEにANS_Attackの範囲をセットしたが、その範囲の最初に呼び出される)。

UE5のパンチ攻撃

同様にオーバーライドを選択しReceived_NotifyEndを選択して作成する(AM_Punching_UEのANS_Attackの範囲の最後に呼び出される)。

UE5のパンチ攻撃

まずはReceived_NotifyBeginを選択し、以下のようにノードを設置する。

UE5のパンチ攻撃

Received_NotifyBeginのMesh Compには現在アニメーションモンタージュを再生しているスケルタルメッシュが出力される。そこへGet Ownerをつなぐことでアクタを取得可能。

続けてGet BP Characterのインターフェースをつなげる。これでアニメーションを再生しているキャラが明らかになる。

そのキャラのAttack Collsionの変数にはアニメーションモンタージュ再生直前にRightPunchCollisionをセットしてある。それをターゲットにSet Collsion Enabledで「Collision Enabled」に設定(初期状態ではNo Collisionなのを変更)。

これで先ほど設定したRightPunchCollisionのOn Component Begin Overlapが動くようになる。

UE5のパンチ攻撃

Received_NotifyBeginの内容をコピーしてReceived_NotifyEndに貼り付けよう。

そして、Set Collsion Enabledを「No Collision」に変更すればOK

UE5のパンチ攻撃

アニメーションモンタージュのANS_Attackの範囲の最後なのでRightPunchCollisionのコリジョンを消し、On Component Begin Overlapが動かないようにしている。

これで以下のようにパンチ攻撃が行われ、敵に当たるとダメージ処理が行われ、HPが0になると倒れる。


次の記事では攻撃を当てて敵が吹き飛ばせるようにしていく。

吹き飛ばし処理

アンリアルエンジンの基本まとめへ戻る

page top