春日部つむぎ no ゲーム作ってみよう!【UE5/UE4】 - カミナリ【UE5/UE4】


https://youtu.be/kYZz5MDwfFY

00:00 オープニング
00:30 1.カミナリアクターの作成
00:48 1-1.コンポーネントの追加
01:39 1-2.イベントグラフの編集
08:03 ざっくりまとめ!
08:31 エンディング

ざっくりまとめ!











落雷エフェクトのON/OFF


一定間隔で繰り返す処理


効果範囲内の処理


ダメージエフェクト


ノックバック処理


キャラクターブループリント

カミナリ作るよ!

一定間隔でカミナリが発生して、カミナリに打たれるとビリビリってなるよ。

1.カミナリアクターの作成

右クリック→ブループリントクラス→アクターを選択し、
ブループリントを作成します。
ファイル名を「GM_bilibili」に変更します。
ブループリントファイルを開き、ビューポートタブを開きます。

1-1.コンポーネントの追加

左のコンポーネントから
・Box Collision を追加します。
Box 5 5 5
・Particle System を追加します。
エフェクト「P_ky_lightning2」
Particle System : -150
Auto Activeteのチェックを外しておきます。
最初からカミナリエフェクトが再生されないようにします。
Auto Activete : チェックオンでコンポーネント作成時にエフェクトが自動で再生されます。オフでエフェクトを再生するには明示的に指定が必要になります。

1-2.イベントグラフの編集

イベントグラフに移動します。
1-2-1.カスタムイベントの作成
カスタムイベント「Bilibili」を作成します。
変数追加
変数を追加します。
変数名「vBilibili」Boolean型を作成します。
落雷状態のときと非落雷状態の切り替える為です。
変数「vBilibili」Setノードを配置し、
カスタムイベント「Bilibili」に接続します。
変数「vBilibili」Setノードのチェックを付けます。
落雷エフェクトのON/OFF
左のコンポーネントより、
Particle SystemをドラッグアンドドロップでGetノードを配置します。
Particle System GetノードからSet Activeノードを配置し、
変数「vBilibili」Setノードにつなぎます。
Set Activeノード : [Target]で指定したコンポーネントのON/OFを切り替えます。
[New Active]にチェックを入れます。
これで、落雷時に、エフェクトを発生します。
次に1秒後に落雷エフェクトが止まるようにします。
Delayノードを配置し、Duratonに「1」を記入します。
変数「vBilibili」SetノードとSet Activeノードをコピーで配置し、
[New Active]のチェックを外します。
1-2-2.一定間隔で繰り返す処理
一定間隔でカスタムイベントが実行させるようにします。
Set Timer by Function Nameノードを配置し、イベントBiaginPlayノードにつなぎます。
Set Timer by Function Nameノードは、
[Function Name]に指定した名前のカスタムイベントを[Time]の秒数後に実行します。
[Looping]にチェックを入れると繰り返し実行されます。
今回は、
[Function Name]は、カスタムイベント名「Bilibili」を記入します。
[Time]は、「4」を記入します。
[Looping]は、チェックを入れます。
1-2-3.効果範囲内の処理
ブランチノードを配置し、イベントTickとつなぎます。
[Condition]には、変数「vBilibili」をつなぎます。
落雷エフェクトがONの時、True処理に向かい、
OFFの時は、False処理を行います。
効果範囲内かの判定処理
効果範囲内にキャラクターが重なっているか判定します。
Foar Each Loopノードを配置し、ブランチノードとつなぎます。
左のコンポーネントより
BoxCollisionをドラッグアンドドロップで配置し、
Get Overlapping Actorsノードを配置します。
Get Overlapping Actors : コンポーネントがオーバラップしているアクターのリストを返します。
Foar Each Loopノードの[Array]につなぎます。
ダメージ処理
Apply Damageノードを配置し、Foar Each Loopノードにつなぎます。
Apply Damageノード : Damaged Actorに指定したアクターにダメージを与えるノード
[Damaged Actor]とFoar Each Loopの[Array Element]をつなぎます。
[Base Damage]は、ダメージを与える数値を記入します。今回ダメージ「1」を記入します。
[Damage Causer]は、ダメージの理由となるアクターを指定します。
このアクター自身ですので、Selfノードをつなぎます。
[Damage Type Class]は、ダメージの種類を指定します。今回はDamage Typeを指定します。
これで、落雷時に効果範囲内にいると、ダメージを受けるようになります。
一旦、コンパイルして、起動してみます。
ノックバック処理
キャラクターがダメージを受けたら、ノックバックするようにします。
Launch Characterノードを配置します。
Apply Damageノードにつなぎます。
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]にキャラクターである
Get Player Characterノードにつなぎます。
Find Look at Rotationノードに乗算ノードをつなぎ、ノックバックする力具合の値[100]を記入します。
出力ピンを右クリックで変数をVelocityに変換します。
乗算ノードを[Launch Velocity]につなぎます。
一旦、コンパイルして、起動してみます。
※キャラクターブループリント側で、
ダメージを受ける処理を作成し、Progress Barと連動します。
ビリビリーーー(××)
ビリビリーーー(××)

2.キャラクターブループリントの編集

キャラクターブループリント側で、
ダメージを受ける処理を作成し、Progress Barと連動します。
複数置いてそれぞれのタイミングをずらしてあげれば、
多様性が生まれますし、
タイミングをはかって通過するってのが緊迫感を与えますよね。