0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UE5 Blueprintでタイルを並べるだけ

Last updated at Posted at 2025-01-16

概要

Unreal Engine 初心者が Blueprint を触ってみた時の個人的な備忘録。

実行したらタイルを動的に敷き詰めるようにする

これだけ。

2025-01-14_03h08_06.png

今回と次回の内容を含めたプロジェクト一式。
プレイヤーの作成と配置も含まれているが正直これを見た方が早い。

環境

UE 5.5.1

新規プロジェクトを作成する

何も入っていないプロジェクトから始める

  • UE5 を起動して ゲーム タブから ブランク を選択
  • プロジェクトの場所、プロジェクト名を入力
  • 作成ボタンを押してプロジェクト作成

2025-01-13_19h59_17.png

レベルを作成する

プロジェクトの作成直後は未保存のオープンワールドレベルが表示されている。
今回はこれを使わずに、もうちょいシンプルな内容のテンプレートで新規レベルを作成することにする。

レベルの保存用フォルダを作成

コンテンツブラウザの コンテンツ フォルダ以下に [プロジェクト名] のフォルダを作成し、
さらにその下に Maps フォルダを作成する。

※ コンテンツ配下のトップに [プロジェクト名] のフォルダを作る理由は下記を参照。
今後作成するアセットの名称なども大体これに従って命名する。

2025-01-13_21h53_24.png

基本テンプレートでレベルを新規作成

メニューの ファイル > 新規レベル > 基本 で新規レベル作成。

Ctrl + S を押すと保存ウィンドウが表示されるので、先ほどの Maps フォルダ以下に名前を付けて保存 (名前は TestMap とした)

2025-01-14_23h04_56.png

デフォルトマップを変更

メニューの 編集 > プロジェクト設定 を開く。

プロジェクト > マップ&モード の Default Maps 内にある エディタのスタートアップマップゲームのデフォルトマップ に、先ほど作成した TestMap を指定する。

2025-01-14_23h19_31.png

Floor を削除

要らないのでアウトライナーにある Floor は Delete で削除しておく。

2025-01-16_10h18_05.png

タイルを作成する

タイルとなるメッシュを用意する

タイルは3Dオブジェクトで表現するのでメッシュを適当に用意する。

※ プロトタイプで使うような簡単な物ならエディタのモデリングモードでも作れるようだけど、使い方がよくわからんので今回は Blender でキューブを作成した。
2025-01-15_00h13_37.png

SM_BoardTile.fbx
2025-01-15_00h10_59.png

Props フォルダを作成して FBX を D&D でインポート。

インポート設定はデフォルトにしたが、オフセットのZ軸を -90 にしておいた方が良いかも。
今回は忘れてやってないけど、まだテクスチャを貼っていないのでどの方向を向いているかは関係ないのでどっちでもいい。

2025-01-15_00h22_06.png

タイル用のアクタを作成する (BP_BoardTile)

※アクタはレベルに配置可能なオブジェクトの基本単位。

[プロジェクト名] のフォルダ以下に Blueprints フォルダを新たに作成。

フォルダ内の適当な箇所で右クリック、表示されたメニューで ブループリント クラス を選択。

2025-01-15_00h03_45.png

親クラスを選択 > アクタ を選択。

ブループリントが作成されるので、名前を BP_BoardTile と命名。

スタティックメッシュコンポーネント追加

BP_BoardTile をダブルクリックで開く。

2025-01-15_01h30_06.png

左上にあるコンポーネントウィンドウの追加ボタンから スタティックメッシュコンポーネント を追加。

2025-01-15_01h34_22.png

次に、画面右にある詳細ウィンドウでスタティックメッシュを先ほど追加した SM_BoardTile に変更。

2025-01-15_01h36_58.png

最後に左上のコンパイルボタンを押してメッシュの設定は完了。

コンパイルしないと実行しても反映されないので注意。今後は特に明記しない。

2025-01-15_01h41_06.png

変数を追加

タイルは生成時に自身のグリッド座標を格納しておきたいので変数を1つ追加する。

GridPos

画面左のマイブループリント ウィンドウで変数欄の横にある+ボタンを押す。
新しい変数が追加されるので下記のように設定する。

  • GridPos (Int Point)

Int Point は 2D 整数座標(x, y)を格納できる構造体。

2025-01-16_07h45_53.png

タイルを管理するボードを作成する (BP_GameBoard)

タイルを生成 / 管理する為のアクタである BP_GameBoard を新たに作成する。

変数を追加

BoardTiles

  • BoardTiles (Map <キー: `Int Point`, 値: `BP_BoardTile`>)

Map は BluePrint で使える連想配列。
グリッド座標である Int Point をキーとして全てのタイルを格納する。

先ほどと同じように変数を追加する。型は別ウィンドウで変更するのでなんでも良い。

2025-01-16_08h40_04.png

画面左の詳細ウィンドウで、変数の型を Map に変更する。

2025-01-16_08h43_00.png

値を BP_BoradTile にして完了。

2025-01-16_08h44_52.png

TileSize

  • TileSize (float)

タイルの実サイズを設定する変数。あとでタイルの生成位置を計算する為に使う。

2025-01-16_08h50_06.png

変数を追加したら詳細ウィンドウでデフォルト値を設定しておく。
この値はタイルのモデルサイズ(縦横の幅 2.1m にしてあるので 210 にした)

2025-01-16_08h52_36.png

関数を追加

CalcTileLocation

さきほどの TileSize とグリッド座標を掛け合わせてタイルの配置位置を計算する為の関数を用意する。

今回は関数にインプット(引数)とアウトプット(戻り値)も詳細ウィンドウから追加。

2025-01-19_03h21_36.png

インプット

  • TileSize (float)
  • GridPos (IntPoint)

アウトプット

  • Location (Vector)

Blueprint

2025-01-19_03h19_10.png

このノードは乗算 (Multiply)
2025-01-16_09h12_01.png

GenerateTiles

ローカル変数

関数内でのみ使用可能なローカル変数を定義しておく。
ループ中に現在のグリッド座標を一時的に保持しておく為の変数。

2025-01-16_09h15_18.png

  • CurrentGridPos (Int Point)

インプット

  • GirdSize (Int Point)

Blueprint

2025-01-19_01h35_25.png

(1). x, y の2重ループを回す
(2). インデックス (x,y) を引数として CalcTileLocation に渡しワールド座標の位置を計算
(3). ワールド座標を引数に SpawnActor でタイルを生成
(4). 生成したタイルを BoardTiles へ格納

ゲームモードを作成する (GM_TestGame)

今度はブループリントクラス作成時にアクタではなくゲームモードを選んで作成する。

2025-01-16_09h37_32.png

名前は GM_TestGame

変数を追加

GameBoard (BP_GameBoard)

関数を追加

InitGameBoard

インプット

  • GirdSize (Int Point)

Blueprint

2025-01-16_09h47_43.png

イベントグラフ

2025-01-16_09h48_21.png

InitGameBoard の引数には x:5, y:5 を指定して 5x5 のサイズでボードを作成する。

ゲームモードをオーバーライドする

ワールドセッティングウィンドウ内のゲームモードオーバーライドを GM_TestGame に変更。

2025-01-16_10h21_09.png

実行する

今回設定した 5x5 で表示される(はず)

2025-01-16_10h23_15.png

次回はこちら

おわり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?