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


https://youtu.be/hhjZLedZAQE

00:00 オープニング
00:22 1.ダメージ床アクターの作成
04:15 2.キャラクターBPの編集
07:05 3.ノックバック処理
09:31 4.Progress Barと連動
10:32 ざっくりまとめ!
10:54 エンディング

ざっくりまとめ!










ビューポート


ダメージを与える処理


ダメージを受ける処理


ノックバック処理

ダメージ床作ろう!

プレイヤーが効果範囲内に侵入すると、ダメージを受けます。

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

右クリック→ブループリントクラス→アクターを選択し、
ブループリントを作成します。
ファイル名を「GM_DamageFl」に変更します。
ブループリントファイルを開き、ビューポートタブを開きます。
1-1.コンポーネントの追加
左のコンポーネントから
・Box Collision を追加します。
 床なので薄く広く配置します。
 0.05 3
※Particle System コンポーネントの追加でエフェクトを追加できます。
エフェクト「P_Fire」
テスト用に
Hidden in Gameのチェックを外しておきます。
Hidden in Game : ゲーム中は不可視化します。
チェックオンで不可視化。オフで可視化。
1-2.イベントグラフの編集
イベントグラフに移動します。
1-2-1.ダメージを与える処理
ダメージ床の効果範囲に入ると、キャラクターにダメージを与えるようにします。
左のコンポーネントより、
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が処理されます。
Apply Damageノード : Damaged Actorに指定したアクターにダメージを与えるノード
Apply Damageノードを配置し、Branchノードとつなぎます。
[Damaged Actor]とGet Player Pawnノードをつなぎます。
On Component Begin OverlapのOterActorをつなぎます。
[Base Damage]ダメージを与える数値を記入します。ダメージ「3」を記入します。
[Damage Causer]は、ダメージの理由となるアクターを指定します。
ダメージ床自身なので、Selfノードつなぎます。
[Damage Type Class]は、ダメージの種類を指定します。今回はDamage Typeを指定します。
テスト用に
Print Stringノードを最後につなぎます。
これで、ダメージ床の効果範囲に入ると、ダメージを受けるようになります。
一旦、コンパイルして、起動してみます。
アクターをレベル上に配置します。
キャラクターにダメージを与えてますね。

2.キャラクターBPの編集

キャラクターブループリントを開きます。
2-1.ダメージを受ける処理
ダメージ床の効果範囲に入ると、キャラクターがダメージを受けるようにします。
キャラクターのブループリントを開きます。
変数を追加します。
変数名「HP」として、変数型をFloat型にします。
コンパイルして、デフォルト値に「100」とします。
イベント AnyDamageノードを配置します。
イベント AnyDamageノード : ダメージを受けた時に開始されるイベント
変数名「HP」をドラッグアンドドロップでSetノードを配置し、イベント AnyDamageノードとつなぎます。
 現在のHP値 - ダメージ値
変数名「HP」をドラッグアンドドロップでGetノードを配置します。
減算ノードにつなぎ、下のピンをEvendt AnyDamageノードの[Damage]とつなぎます。
減算ノードの出力と変数名「HP」Setノードとつなぎます。
2-2.HPが「0」になった時の処理
Branchノードを配置し、変数名「HP」Setノードとつなぎます。
変数名「HP」Setノードの緑の出力ピンを伸ばし、条件式「<=」を配置します。
条件式「<=」をBranchノードの[Condition]とつなぎます。
テスト用に
Print Stringノードを最後につなぎます。
[In String]に「GameOver」と記入します。
これで、HPが「0」になった時、GameOverと表示されるようになります。
一旦、コンパイルして、起動してみます。

3.ノックバック処理

キャラクターがダメージを受けたら、ノックバックするようにします。
Launch Characterノードを配置します。
Launch Characterノード : 指定した方向に力を加えます。
[Target]にGet Player Characterノードをつなぎます。
ダメージ床からみて、侵入してきたキャラクターの向きにノックバックさせます。
Find Look at Rotationノードを配置します。
Find Look at Rotationノード:[Start]から[Target]の向きを取得します。
[Start]にダメージ床を指定する為に、Get Actor Locationをつなぎます。[Target]はSelfです。
[Target]Get Actor Locationをつなぎ、[Target]に侵入してきたキャラクターである
On Compoarnent Begin Overlapの[Other Actor]をつなぎます。
Find Look at Rotationノードに乗算ノードをつなぎ、ノックバックする力具合の値[400]を記入します。
乗算ノードを[Launch Velocity]につなぎます。
一旦、コンパイルして、起動してみます。

4.Progress Barと連動

以前作成した。
スタミナバーが減少するようにします。
変数名「HP」を
変数名「Stmina」に変更します。