日々のいろいろ

日々を綴ったほとんど日記

UE4 オブジェクトのランダム配置

まえがき

アンリアルエンジンを最近使えるようになりたいなと思っているのですが、僕は学習が苦手なので手早く使えてる雰囲気を出したいのです。

例えば、オブジェクトをただ配置するのではなく、数を指定して配置したり、ランダムに配置したり、少しの変化でも使いこなせている感じがするじゃないですか。
こういった達成感が次のモチベに繋がるのです。

ですから、基礎を一通り学ぶより特定の応用に必要な基礎だけを学びたいのです。
しかし、ネットのこの層に対する情報はどこも少なめです。

なので今回、アンリアルエンジンのオブジェクトを指定した範囲内に個数を指定してランダムに配置する方法を基礎を交えて解説していきたいと思います。

最初は理解がついてこなくても大丈夫、マネでも出来ればそれは凄い事だと思うのです。

※僕自身、まだまだ学び始めたひよっこですので、是非アンリアルエンジンの達人の方々にも読んで頂いて至らない点などありましたら教えて頂きたいです。

 

事前知識として

  • アンリアルエンジンの入手
  • アンリアルエンジンの起動

環境

Unreal Engine 4.24(日本語化)

基礎

プロジェクト設定

プロジェクト作成
プロジェクトテンプレート選択
プロジェクト設定

ゲームのBlankテンプレートをブループリントに設定して作成しました。

プロジェクト起動時の画面

プロジェクトが開かれて、このような画面であれば成功です。

ブループリントの追加

それでは早速、ブループリントを追加していきましょう。

ブループリントの追加
親クラスの選択
ブループリントが追加されていることを確認

新規追加からブループリントを選択しましょう。
今回親クラスはActorを選択しました。
NewBlueprintが追加されていれば成功です。

オブジェクトの配置

アクタの配置
配置されたアクタ

コンテンツブラウザor配置モード配置可能なオブジェクトの一覧的な所(名称知らない)から、今回はキューブをドラッグ&ドロップでレベル真ん中の画面に配置します。(画像のように真ん中になくても視認できていれば大丈夫です)

オブジェクトにブループリントの追加

追加したキューブを左クリックで選択します。

アクタにブループリントの追加

その状態でブループリント/スクリプトを追加を選択します。
確認画面が出てきたらブループリント名を覚えておくか、覚えやすい名称に変更して作成します。今回僕は、デフォルトのCube_Blueprintのまま作成しています。
作成後に新しく表示されるウィンドウは使わないので閉じ
てください。

ブループリントの編集

先ほど”ブループリントの追加”で作成したNewBlueprintをダブルクリックしてください。

ブループリントの編集

このような画面が表示されていれば成功です。
ここに新しいノードを追加していきます。
まず、最初から存在するConstruction Scriptの右側の白い△アイコンをドラッグ&ドロップすると検索バーが表示されます。検索バーに”Child”と入力し追加 Child Actor ComponentまたはAdd Child Actor Componentを探して左クリックで追加しましょう。

ブループリントAdd Child Actor Componentを追加

次に追加したChild Actor Componentの右側の白い△アイコンをドラッグ&ドロップすると先ほどのように検索バーが表示されます。
そこにもう一度”Child”と入力します。

Set Child Actor Class

Set Child Actor Class」を探して追加してください。
次は「Set Child Actor Class」内のIn Classと書かれた紫色の〇をドラッグ..略..して上部に表示されている「変数へ昇格」を追加してください。
変数の追加が完了したら、以下のようなノードが出来上がっているかと思います。

ブループリントノード例

まだ接続していないChild Actor Componentを追加Set Child Actor Classの青色の〇をドラッグして繋げたら、ここで一度コンパイルを押して更新を掛けてあげます。

コンパイルボタン

コンパイルが完了したら、変数を左クリックで選択します。
詳細タブのデフォルト値をオブジェクトにブループリントの追加で作成したCube_Blueprintに変更します。

変数の設定

インスタンス編集可能にしていると便利ですが今回僕は使わないのでスルーです)

変更後もう一度コンパイルします。
完了したら一旦ブループリントの設定を閉じてオブジェクトを配置する画面(おそらくビューポート?)に行きましょう。
NewBlueprintをドラッグ&ドロップして配置してみてください。

レベルにブループリントの配置

Cubeが追加されれば成功です。
ここまでが基礎です。基礎が出来れば応用の方が簡単です。
(僕はノードを探したり紆余曲折で、ここまで2~3時間掛けました)

応用

ランダム配置

では、ブループリントの設定に戻ります。
ここからは応用ということで、少し解説を簡略化しますが、ここまで来れた貴方ならきっと大丈夫、余裕です。

まずオブジェクトを生成する数を指定します。
For LoopConstruction ScriptChild Actor Componentを追加の間に追加
For LoopLast Indexに変数を追加します。
(変数は使わなくても大丈夫です)

ノード一例

デフォルト値を任意で指定します。(今回僕は10に設定、あまり大きい値にするとスペックによりますが処理落ちします)

次にオブジェクトを生成する位置を指定します。

ランダムレンジの追加

Make Vectorノードに画像を参考にしながら任意でRandom Floot in Rangeを繋げて値を指定してみて下さい。

From Vector to Transform
Make VectorChild Actor Componentを追加の間にあるチョボは位置を変形に変えるノードで接続を行うと自動で追加されます。

 

と、以上接続が完了したらコンパイルしましょう。

 

ビューポートに戻りNewBlueprintを配置して確認してみてください、指定した範囲内に※指定した数のオブジェクトがランダムに配置されているではありませんか。
(※今回のForLoopは0~10回オブジェクトを作成するなので11個あるのは間違いではないです)

実際にレベルに配置して遊んでいる画像

これで、この記事の目標を皆さん達成する事ができたのではないでしょうか?

UE4には今回触れていないノードがまだまだ沢山あります、今回作成したブループリントに応用できるモノも多くあり自分の好きなように変更を加えたり改良したり工夫をして遊んでみて下さい。

ここまで読んで頂きありがとうございます。

 

動画

一連の流れを撮影したものです。


UE4でオブジェクトのランダム配置

参考ページ

docs.unrealengine.com

papersloth.hatenablog.com

次の記事

legendimposter.hatenablog.jp