ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】Unity勢&入門者向け!ブループリントの作成と対象の情報を取得する。~②自動で取得する編~

はじめに

前回の~①詳細から対象を選択する編~の続きです。

まだ見ていない方は先にそちらをご覧ください。

さて、前回は新規ブループリントの作成とマップから選択したオブジェクトの情報を取得するところまで行いました。

 

今回はマップから取得する動作を自動に行いたいと思います。

namiton.hatenablog.jp

Unreal Engine 4で極めるゲーム開発 サンプルデータと動画で学ぶUE4ゲーム制作プロジェ [ 湊和久 ]

価格:4,950円
(2022/4/12 00:39時点)

やりかた

⓪事前準備、楽に取得できるようにしておこう

この工程は行わなくても問題ないですが、

今後作業を楽にしていくためなので実装しておくことをお勧めします。

FirstPersonCharacterを開くと

ターゲットを取得するノードがあると思いますが、

取得する際に変数ごとにゲットするようになっています。

 

まとめて取得できたほうが何かと便利なので、

関数という仕組みをターゲット側に作成してまとめられるようにしていきましょう。

f:id:namiton:20220207160758p:plain

▲ゲットしてる場所

 

Cube_Blueprintを開きます。

イベントグラフを開き関数、GetTargetInformationを作成します。

f:id:namiton:20220207163943p:plain

作成したら、このようにノードを組みます。

リターンノードは関数の詳細の+ボタンから変数を追加すると作成できます。

f:id:namiton:20220207164208p:plain

純粋にチェックを入れておきます。

こうすることで実行ノードをつながなくても関数を使用することができます。

f:id:namiton:20220207164501p:plain

FirstPersonCharacterに戻り

TargetActorから紐を引っ張り作成した関数を呼び出します。

f:id:namiton:20220207164544p:plain

再度接続します。

関数化することでノード数が減り、管理しやすくなります。

Unityだと戻り値のあるメソッドですね。

f:id:namiton:20220207164721p:plain

 

①マップ上にあるかどうかで自動で目的のアクターを取得してみる。

本命の自動アクター取得です。

 

FirstPersonCharacterを開きノードBeginPlayを作成しましょう。

作成されているときは自動的にそのノードに移動します。

f:id:namiton:20220207165442p:plain

既存のノードを残したまま作業したいので、

検索からSequenceノードを作成して

実行ピンを分割します。

 

 

次にGetAllActorsOfClassを作成します。

このノードはマップ上のアクターを全検索して任意のクラスと同じものを配列で返します。UnityでいうとGameObject.Findに相当します。

UnityでFind系を使ったことがある方は分かりますが、このノードは非常に重いため、毎フレーム呼ばれる処理で書くべきではありません。

そのためBeginPlayで一度のみ呼ぶようにしています。

 

f:id:namiton:20220207165942p:plain

以下のように組んでみましょう。

f:id:namiton:20220207181446p:plain

配列で返ってきたCube_Blueprintのアクターの一番上(一番初めに見つかったオブジェクト)を、

Is Vaildという存在するかどうかのノードで分岐させて

作成したTargetActorに流しています。

 

ここまで出来たら変数targetActorの公開設定をなくしておきましょう。

(右側の目のアイコンですね)

これをすることで前回マップ上から設定した項目はなくなり

設定できなくなります。

f:id:namiton:20220207182018p:plain

 

実行して前回設定したキー(解説では@かF)を押すと

しっかり取得できていると思います。

f:id:namiton:20220207182121p:plain

 

今回はここまでです。

次回は特定の条件(プレイヤーが触れたとき)などに

情報を返すようする編を書こうと思います。

それではまた別の記事で!

さいごに

次回は特定の条件(プレイヤーが触れたとき)などに

情報を返すようする編を書こうと思います。

 

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではまた別の記事で!