春日部つむぎ no ゲーム作ってみよう!【UE5/UE4】 - Dotダメージ【UE5/UE4】


https://youtu.be/cSfWsIMLGUc

00:00 オープニング
00:34 1.Dotダメージアクターの作成
07:02 2.追加効果
08:02 ざっくりまとめ!
08:26 エンディング

ざっくりまとめ!









効果範囲に侵入したとき


効果範囲から出たとき


ダメージを与える処理


エフェクト


ノックバック

■Dotダメージ

プレイヤーが効果範囲内にいる間は、一定間隔でダメージを受けるようするよ。

1.Dotダメージアクターの作成

右クリック→ブループリントクラス→アクターを選択し、
ブループリントを作成します。
ファイル名を「GM_DotDamageFl」に変更します。
ブループリントファイルを開き、ビューポートタブを開きます。
1-1.コンポーネントの追加
左のコンポーネントから
・Box Collision を追加します。
 床なので薄く広く配置します。
 0.05 30

※Particle System コンポーネントの追加でエフェクトを追加できます。
エフェクト「P_Fire」

テスト用に
Hidden in Gameのチェックを外しておきます。
Hidden in Game : ゲーム中は不可視化します。
チェックオンで不可視化。オフで可視化。
1-2.イベントグラフの編集

イベントグラフに移動します。
1-2-1.効果範囲に侵入したときの処理
▼On Component Begin Overlap
Dotダメージの効果範囲に入ると、キャラクターに一定間隔でダメージを与えるようにします。

左のコンポーネントより、
Box Collisionを右クリック→イベントを追加→On Component Begin Overlap
On Component Begin Overlapを配置します。

On Component Begin Overlap
コリジョン内に入るとイベントが開始します。

効果範囲に入ったのがプレイヤーであるか判定します。
Other ActorピンとGet Player Pawnをイコールでつなぎます。
Other Actor : コリジョンに侵入したアクターの情報を取得します。
Get Player Pawn ノード : プレイヤーキャラクターを取得します。
On Component Begin OverlapにBranchノードをつなぎます。
BranchノードのConditionとイコールノードをつなぎます。
オーバーラップしたアクターがプレイヤーであれば、Trueが処理され、
それ以外であれば、Falseが処理されます。
▼変数追加
変数を追加します。
変数名「GM_DotDamageFl」Boolean型を作成します。
変数「GM_DotDamageFl」Setノードを配置し、ブランチノードのTrueと接続します。
変数「GM_DotDamageFl」Setノードのチェックを付けます。

この変数は、Dotダメージの効果範囲内であれば、
変数「GM_DotDamageFl」はチェック有りを返します。

効果範囲に入ったら
カスタムイベントが実行させるように、
Set Timer by Function Nameノードを配置します。

Set Timer by Function Nameノードは、
[Function Name]に指定した名前のカスタムイベントを[Time]の秒数後に実行します。
[Looping]にチェックを入れると繰り返し実行されます。

今回は、
[Function Name]は、この後作成するカスタムイベント名「DotDamage」を記入します。
[Time]は、「2」を記入します。
[Looping]は、チェックを入れます。

変数「GM_DotDamageFl」Setノードとつなぎます。
1-2-2.効果範囲から出たときの処理
▼On Component End Overlap
Dotダメージの効果範囲から出ると、キャラクターにダメージを与えないようにします。

左のコンポーネントより、
Box Collisionを右クリック→イベントを追加→On Component End Overlap
On Component End Overlapを配置します。

On Component End Overlap
コリジョンから出るとイベントが開始します。

効果範囲から出たのがプレイヤーであるかの判定は、
On Component Begin Overlapと同じなので、コピーします。

変数「GM_DotDamageFl」Setノードを配置し、ブランチノードのTrueと接続します。
変数「GM_DotDamageFl」Setノードのチェックは外します。

Dotダメージの効果範囲範囲外であれば、
変数「GM_DotDamageFl」はチェックなしを返します。
1-2-3.Dotダメージを与える処理
カスタムイベント「DotDamage」を作成します。

ブランチノードを配置し、カスタムイベントとつなぎます。
変数「GM_DotDamageFl」Getノードを配置し、Conditionにつなぎます。

効果範囲内であれば、変数「GM_DotDamageFl」はチェック有ですので、Trueを返します。
範囲外であれば、変数「GM_DotDamageFl」はチェックなしですので、Falseを返します。

Apply Damageノードを配置し、Branchノードとつなぎます。
Apply Damageノード : Damaged Actorに指定したアクターにダメージを与えるノード

[Damaged Actor]とGet Player Pawnノードをつなぎます。

[Base Damage]は、ダメージを与える数値を記入します。今回ダメージ「10」を記入します。
[Damage Causer]は、ダメージの理由となるアクターを指定します。
このアクター自身ですので、Selfノードをつなぎます。
[Damage Type Class]は、ダメージの種類を指定します。今回はDamage Typeを指定します。

テスト用に
Print Stringノードを最後につなぎます。

これで、Dotダメージの効果範囲に入ると、ダメージを受けるようになります。

一旦、コンパイルして、起動してみます。

アクターをレベル上に配置します。

キャラクターに一定間隔でダメージを与えてますね。

Dotダメージアクター側に
エフェクト効果とノックバック処理を付与して、

キャラクターブループリント側で、
ダメージを受ける処理でProgress Barと連動します。

なんかいい感じになりましたね。