ダメージ床作ろう!
プレイヤーが効果範囲内に侵入すると、ダメージを受けます。
1.ダメージ床アクターの作成
右クリック→ブループリントクラス→アクターを選択し、
ブループリントを作成します。
ファイル名を「GM_DamageFl」に変更します。
ブループリントファイルを開き、ビューポートタブを開きます。
1-1.コンポーネントの追加
左のコンポーネントから
・Box Collision を追加します。
床なので薄く広く配置します。
0.05 3
※Particle System コンポーネントの追加でエフェクトを追加できます。
エフェクト「P_Fire」
テスト用に
Hidden in Gameのチェックを外しておきます。
Hidden in Game : ゲーム中は不可視化します。
チェックオンで不可視化。オフで可視化。
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-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」に変更します。