■Dotダメージ
プレイヤーが効果範囲内にいる間は、一定間隔でダメージを受けるようするよ。
1.Dotダメージアクターの作成
右クリック→ブループリントクラス→アクターを選択し、
ブループリントを作成します。
ファイル名を「GM_DotDamageFl」に変更します。
ブループリントファイルを開き、ビューポートタブを開きます。
1-1.コンポーネントの追加
左のコンポーネントから
・Box Collision を追加します。
床なので薄く広く配置します。
0.05 30
※Particle System コンポーネントの追加でエフェクトを追加できます。
エフェクト「P_Fire」
テスト用に
Hidden in Gameのチェックを外しておきます。
Hidden in Game : ゲーム中は不可視化します。
チェックオンで不可視化。オフで可視化。
▼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ノードとつなぎます。
▼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と連動します。
なんかいい感じになりましたね。