ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】⑳プレイヤーを狙う大砲を作ろう=砲弾からダメージを受けるようにする=

目次

 

はじめに

注意

UE5Preview2の現在の情報です。

今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。

 

解説

①砲弾がプレイヤーに当たったら自壊させる

BP_Cannonballを開きStaticMeshのコリジョン応答がOverlapAllDynamicであることを確認しましょう。

f:id:namiton:20220324113323p:plain

このスタティックメッシュにモノが触れたときのイベントを記述します。
コンポーネントからStaticMeshを右クリックしてOnComponentBeginOverlapを追加します。

f:id:namiton:20220324113414p:plain

 

OnComponentBeginOverlap

コンポーネントが何かに当たった瞬間に呼ばれる。

f:id:namiton:20220324113550p:plain

 

次に画像のように組みます。

当たったアクタの情報がプレイヤーキャラクターと同じだったら自壊するようにします。

f:id:namiton:20220324113729p:plain

 

コンパイルして実行してみましょう。

プレイヤーキャラクターに当たった瞬間に弾が消えているのが分かります。

f:id:namiton:20220324113916p:plain

 

②ダメージ処理を記述する

アンリアルエンジンにはアクタ間でのダメージ処理を円滑に行うためのノードがあります。ApplyDamageを追加しましょう。

f:id:namiton:20220324114201p:plain

 

ダメージの量を変数化しておきましょう。

BaseDamageを右クリックして変数に昇格します。

f:id:namiton:20220324114337p:plain

 

コンパイル後デフォルト値を12にしましょう。

f:id:namiton:20220324114444p:plain

 

念のため一度だけ呼ばれるようにDoOnceノードを挟んでおきます。

f:id:namiton:20220324114742p:plain

これで砲弾側の設定は完了です。

 

③プレイヤーにダメージ処理を記述する

BP_ThirdPersonCharacterを開いて前回作成したテスト用のタイムラインを切断しておきます。

f:id:namiton:20220324124324p:plain

 

イベントAnyDamageを追加します。

これで砲弾のダメージ処理時にここが呼ばれます。

f:id:namiton:20220324124628p:plain

 

そうしたら画像のようにHPを減らす処理を記述します。

Clampノードで0以下にならないようにします。

f:id:namiton:20220324125537p:plain

 

実行してみましょう。

被弾するたびにHPが減っていれば完成です。

f:id:namiton:20220324125717p:plain

 

もしはじめからHPバーが出ていないときは、キャラクターとウィジェットBPのHP変数が100になっていることを確認しましょう。

f:id:namiton:20220324130624p:plain

f:id:namiton:20220324130640p:plain

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。