PR

【UE5】「画面範囲ロックオン」を作ってみようその4:敵のマーカーを切り替えよう!【TPSシューター】

UnrealEngine5

本記事は「UE5_Ver5.3.2」で制作しているよ

また【画面範囲ロックオン」を作ってみよう】シリーズは、一部記事が「有料」だよ
ご理解のもと閲覧していってね

また、前提条件として「射撃システム」を実装する必要があるよ
まだしてないのなら下記のURLから飛んで見てみてね

こんにちは!ウンパッパです!

今回は「画面範囲ロックオン」を作ってみよう第4弾!

「2つ目の探知レーダー」を作って範囲内に入った際は
敵のマーカーを「□」から「◇」に変化する

を実装していくよ!

この記事は「”Enemy”なら弾がホーミングする!」の続きだから
もし見てなかったら下のボタンから飛んでみてね

まずこの記事で何が実装されるのか、「完成した姿」を見てみよう

既に敵は「□」マーカーが表示されていて
プレイヤーの一定範囲に入るとマーカーが「◇」に変化

「◇」になった敵にのみ「弾がホーミング」して
「□」状態の敵には「ホーミング」しないね

これを作れたら次はいよいよ「ロックオン画面範囲」の作成だ!

それでは早速作っていこう!

「Rock-On Search Radar」を作り「Lock-On配列」に加える

今回行う「ロックオン画面範囲」のシステムの概要としては

2つ目の「Multi Sphere Trace By Channel」と
新しい「Rock-On配列」を用意し
まずは「Search Range」にて「広い範囲内にいるすべての敵」を「Enemy配列」に追加

2つ目の「Multi Sphere Trace By Channel」を「Rock-On Search Radar」とし
「ロックオン距離」と「ロックオン画面範囲」指定して
「Rock-On Search Radar」に引っかかった「敵」を「Enemy配列」から「Rock-On配列」に移動

そして「Rock-On配列」配列内にいる敵を「ロックオン対象」とする

この2工程を踏むことによりロックオンマーカーが「□」⇒「◇」という
視覚的にに分かりやすいシステムになるんだ

「Lock-On」した時の「マーカー」を作る

「Rock-On Search Radar」を作る前に
まずは「◇マーカー」を用意するよ

「SRLO_HUD」の「Track Enemies関数」を開いたら
「Lock-On」用の変数を作ろう

作った変数名変数のタイプ内容
Lock-OnActor配列無しこの配列に入った「Actor」をロックオンの対象にするよ
Lock-On_MarkerTexture単一T_LockonMarkerロックオン用の「マーカー」を表示させる

ロックオンマーカー内に入るtextureはこれだよ

次に関数の最初に「Sequenceノード」を付けてね

その後、「Enemy配列」用のマーカーを表示させるノード群をまるまるコピペして
「Sequenceノード」の「Then1」にくっつける

この「Then1」につながってるノード群が「Lock-On配列」用になるよ

出来たら「Lock-On」用に2か所差し替えよう

【その1】
「Lock-On配列」が参照されるように「配列」を差し替える

【その2】
「texture」を「Lock-On_Marker」に差し替える

最後に

色を好みのものに変えたら完了だ

「Search Range」を大きく広げる

ここから2つ目の「Search Radar」
「Lock-On Search Radar」を作っていくよ

その前身としてまずは
「広い範囲内にいるすべての敵」を取得するべく「Enemy」の探知を広範囲にしよう

「SRLO_System」の「Search Radar関数」にて

「Search Range変数」を「10000」まで上げよう

これでOK

次に「Lock-On Search Radar」を作りに行こう

「Lock-On Search Radar」を作る

まずは変数を用意しよう

作った変数名変数のタイプ内容
Lock-On RangeFroat単一5002つめの「Multi Sphere Trace By Channel」に
差し込む変数
ロックオン「距離」になるよ
Lock-OnActor配列無しこの配列に入った「Actor」をロックオンの対象にするよ

次に

「Lock-On配列」が「Enemy配列」に逆流しないようにする

1つ目の「Search Radar」にて「Lock-On配列」のアクターが「Enemy配列」に逆流しないようにするよ

これでOKだ

「Lock-On Search Radar」を作る

次は「Lock-On配列」のための2つ目の「Lock-On Search Radar」を作るよ

「Search Radar」の処理が完了した後に起動してほしいから

「For Each Loopノード」の「Completedピン」に「Sequenceノード」を付けて

「Enemy配列の排除」と「Lock-On Search Radar」を同時に行えるようにしよう

次に「Search Radar」のシステムをまるまるコピペして

「Sequenceノード」の「Then1」入れよう

コピペが終わったら

2つめの「Search Radar」を「Lock-On Search Radar」になるよう細部を変えてくよ

変える場所は【8か所だ】

【その1】
「Multi Sphere Trace By Channel」の「Search Rance」を「Lock-On Range」に変える

【その2】
「そのアクターはEnemyか?」を削除する

すでに「Tag=Enemy」の判別は「Enemy配列」で行ってるのでこのノード群は不要だ

ただ「データが有効であるかどうか?」は確認したいので「Is Validノード」は残しておこう

【その3】
「配列内に同じ敵はいるか?」を「Lock-On」のみ弾くようにする

【その4】
「Enemy配列」なら「Lock-On配列」に入れるようにする

【その5】
探知範囲を「Lock-On Range」に差し替える

【その6】
「配列の追加」を
「Lock-On配列に追加後Enemy配列から排除」に作り替える

【その7】
配列追加処理の「For Each Loop」と配列排除処理の「For Each Loop」をつなげ
「sequenceノード」を削除

「排除」の指定を「Enemy配列」から「Lock-On配列」に差し替える

【その8】
範囲の条件を「Lock-On Range」に差し替える

これで差し替え完了

最終的にノード群の見た目がこうなったら「Lock-On Search Radar」はOKだ

「Track End関数」を作り変える

最後に「Track End関数」を「Lock-On配列」も排除できるよう変更するよ

これで完了だ

確認のために「プレイ」してみよう

「Lock-On Search Range」内に入ったら「マーカー」が「◇」になって
「Lock-On Search Range」の範囲外になったら「マーカー」が「□」になる

うん!とてもいい感じだね!

次は「Lock-On 配列」なら「弾がホーミング」するようにしよう

「Lock-On」なら「弾がホーミング」する

「BP_CP」の「イベントグラフ」にて

「射撃システム」の最後につけた
「Homing_Projectile」に「Enemy」を渡すための「Homingノード」

それを「Enemy配列」から「Lock-On配列」に差し替えよう

差し替えたら「プレイ」してみよう

うん!切り替わった「◇」マーカーにだけ弾がホーミングするようになったね!

やったね!

これであとは「画面範囲」を作って「範囲内なら「◇」マーカー」にするようにできれば完成だ!

おわりに

以上、
「画面範囲ロックオン」を作ってみようその4:敵のマーカーを切り替えよう!
でした!

ここまで読んでくれてありがとね!
次回は「敵のマーカーを切り替えよう!」
を作っていきたいと思うよ!

下のボタンから次のページに進めるよから

よかったら見ていってね!

【現在鋭意制作中です】

一覧に戻る

コメント

unpappa

3Dとゲーム制作を趣味でたしなむ遊び人
ロボットアニメとアニメ調のキャラが好きで趣味でちょこちょこ作ります
人生の目標は「オリジナルのロボゲー」を1本作る事!
初心者だからこそ、いろいろな荒波がやってくるけど、それらを学びに変えて
「最もわかりやすいクリエイティブブログ」を目指してます!どうぞ良しなに!

unpappaをフォローする
Ci-enを始めました!あなたの応援で本サイトの記事の投稿頻度と質を向上させることができます!
詳しく見る!
Ci-enを始めました!あなたの応援で本サイトの記事の投稿頻度と質を向上させることができます!
詳しく見る!
タイトルとURLをコピーしました