本記事は「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-On | Actor | 配列 | 無し | この配列に入った「Actor」をロックオンの対象にするよ |
Lock-On_Marker | Texture | 単一 | 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 Range | Froat | 単一 | 500 | 2つめの「Multi Sphere Trace By Channel」に 差し込む変数 ロックオン「距離」になるよ |
Lock-On | Actor | 配列 | 無し | この配列に入った「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:敵のマーカーを切り替えよう!
でした!
ここまで読んでくれてありがとね!
次回は「敵のマーカーを切り替えよう!」
を作っていきたいと思うよ!
下のボタンから次のページに進めるよから
よかったら見ていってね!
【現在鋭意制作中です】
コメント