初心者向け記事。
ランダム位置のスポーンを実現するには「Random Point in Bounding Box
」というノードを使用。
今回次の例を作る。
まず箱だけが入ったシンプルなBPを作る。これが複数スポーンする。
今回は中にキューブを1コいれただけのものを作った(サイズを非常に小さく)
たったこれだけ。
別でActorのブループリントを新規作成。
ここで発生する範囲を生成している。
コンポーネントを追加から「Box Collision
」を追加
「シェイプ
」を使ってBoxのサイズを調整。これがスポーンする範囲になる。
※必ず「シェイプ
」で作ること。トランスフォームで作ると失敗する。
今回組むノードは次。はじめに作った範囲用のブループリント。
今回重要なのは「Random Point in Bounding Box
」
今回の主要箇所を解説
Get Box
で変数をとってくる。
GetWorldLocation
。箱そのものの位置をとってくる。Box Extent
。これがBoxにExtentで指定した範囲。
つまりこの中からランダムな点にスポーンする。Return Value
にランダムな位置がLocationとして出力。他のノードがわからない人向けにサラっと。詳しくは他所にて。
こちらが実際にものをスポーン(生み出す)ノード
SpawnActor BP Box
となっているが後ろの「BP Box
」は下のClassで指定した名前が入る(ノードの名称が逐一変更される)
デフォルトでは上のようにオレンジ色のピンが出ているので(上から2番め)分割しておくとLocation
, Rotation
, Scale
に分かれて使いやすい。
次は単にゲーム開始直後のループ処理(10回処理を実行する)
レベルに範囲用のブループリントをドラッグして配置。コンパイルして実行。
実行する度に違う位置に箱が発生(スポーン)している
重なっていてもスポーンするのでこのあたりの制御が別で必要そうだ。
今回の目的外なのでここまで。