2021-01-17

ランダム位置にスポーンさせる方法【UE4】

アクターをランダムな位置にスポーンさせる方法をシンプルに解説

Article Image

ランダム位置のスポーン

初心者向け記事。

ランダム位置のスポーンを実現するには「Random Point in Bounding Box」というノードを使用。

今回次の例を作る。

image-20210117134908682

スポーンするアクターを作っておく

まず箱だけが入ったシンプルなBPを作る。これが複数スポーンする。

今回は中にキューブを1コいれただけのものを作った(サイズを非常に小さく)

image-20210117135338686

たったこれだけ。

発生する範囲を作る

別でActorのブループリントを新規作成。

ここで発生する範囲を生成している。

コンポーネントを追加から「Box Collision」を追加

image-20210117135057365

シェイプ」を使ってBoxのサイズを調整。これがスポーンする範囲になる。

image-20210117135218327

※必ず「シェイプ」で作ること。トランスフォームで作ると失敗する。

イベントグラフ

今回組むノードは次。はじめに作った範囲用のブループリント。

image-20210117135830673

今回重要なのは「Random Point in Bounding Box

解説

今回の主要箇所を解説

image-20210117135905943

  1. 変数からBoxをドラッグしてドロップ。Get Boxで変数をとってくる。 image-20210117140017485
  2. Boxからピンを引っ張ってGetWorldLocation。箱そのものの位置をとってくる。
  3. Boxからピンを引っ張ってBox Extent。これがBoxにExtentで指定した範囲。 つまりこの中からランダムな点にスポーンする。
  4. 画像のとおりにつなぐ。Return Valueにランダムな位置がLocationとして出力。

他がわからない人へ

他のノードがわからない人向けにサラっと。詳しくは他所にて。

image-20210117140513532

こちらが実際にものをスポーン(生み出す)ノード

SpawnActor BP Boxとなっているが後ろの「BP Box」は下のClassで指定した名前が入る(ノードの名称が逐一変更される)

image-20210117140835703

デフォルトでは上のようにオレンジ色のピンが出ているので(上から2番め)分割しておくとLocation, Rotation, Scaleに分かれて使いやすい。

次は単にゲーム開始直後のループ処理(10回処理を実行する)

image-20210117140925459

実行

レベルに範囲用のブループリントをドラッグして配置。コンパイルして実行。

image-20210117141420627

実行する度に違う位置に箱が発生(スポーン)している

image-20210117141429971

以上

重なっていてもスポーンするのでこのあたりの制御が別で必要そうだ。

今回の目的外なのでここまで。



この記事のタグ

この記事をシェア


謎の技術研究部 (謎技研)