【UE5 C++】Unreal Engine で テトリス風ゲームを作ってみる#1
Unreal Engine Version 5.3.2
はじめに
Unity を使ってテトリス風ゲームを作成したが、同じものをUnreal Engine で作るとどうなるのかを考えてみる。
Unreal Engine だとどう作る?
テトリスに必要なものは以前ここで整理しているので、それをUnreal Engine では何の仕組みを使うと実現できるのか?を整理していく。
まずは、Unity の機能がUnreal Engineでは何にあたるのかをざっと確認してみる。
Unreal Engine のドキュメント上に、Unity と Unreal Engine の用語対応表があるのでそこを参照するのがよい。ちなみに使用するバージョンは5.3.2 を想定。
ブロックを画面に表示する
テトリスの基本となるブロックを画面上に表示する方法を確認する。
Unity でいえば、SpriteRenderer の付いたGameObject をScene 上に配置すればよいが、それをUnreal Engine だとどうするのか?
まずは空のレベルを作成する。Unity で言うところのScene に相当している。メニューバーから、"File" → "New Level" を選んで、"Empty Level" を選択する。
これで空の新しいレベルが作成されたので、今度はメインンツールバーの "BluePrints" ボタン(3個の箱がつながっているアイコン)を選択して、"Open Level Blueprint" を選択して、BluePrints Editor を開く。
そしたらファイルアイコンを押して名前を付けて保存する。保存先のフォルダは"Content" の下に、"TetrisLikeTest1/Maps" を作成し、そこに保存する。
今度は、レベルビューポートの設定をいくつか変更する。
2D ゲームを作成するため、カメラを"Perspective" から "Right" (Orthographic 投影でXZ平面)に変更。Rendering を "Lit" から "Unlit" に変更。グリッドを "10" から "100" に変更する。"100" の意味は 100 Unit 単位でグリッド線を表示するという意味である。
次は、テクスチャとスプライトの準備。
"Content/TetrisLikeTest1" フォルダの下に"Assets/Sprites" フォルダを作成。そのフォルダにUnity の時に使ったものと同じBlock のPNGファイルをDrag & Dropする。
Unreal Engine では2D 用のテクスチャに変換するが必要なようで、テクスチャファイルのアイコン(現時点では上図のように真っ白)の上で、右クリックから"Sprites Actions" → "Apply Paper2D Texture Setting" を選択して変換を実行。
すると正しくBlock のテクスチャが表示されるようになる。
このテクスチャから今度はスプライトを作成する。手順は、テクスチャファイルのアイコンから右クリックで、"Sprites Actions" → "Create Sprite" を実行するだけ。
すると同一フォルダ内にBlock のテクスチャをもったスプライトが生成される。
Unreal Engine には特有の命名規則(GitHub - Allar/ue5-style-guide: An attempt to make Unreal Engine 4 projects more consistent)があるみたいで、先ほど作成したブロックのテクスチャファイルとスプライトファイルの名前をそれに合わせて変更しておく。
テクスチャは、プレフィックスに"T_"を追加。スプライトは、プレフィックスに"SPR_"を追加。
次にブロックのアクターを作成し、上記のスプライトをアタッチする。Unity で言うところのGameObject にSpriteRenderer コンポーネントをアタッチするのと同様。
"Content/TetrisLikeTest1" フォルダの下に"BluePrints" フォルダを作成。空のフォルダエリアを右クリックして、"BluePrint Class"を選択する。
すると、どのクラスから派生するかの選択肢が表示されるので、"Actor" クラスを選択する。出来たBluePrint Class の名前を"BP_Block"に変更する。
作成されたBluePrint のアイコンをダブルクリックしてBluePrint エディタを起動させる。BluePrint エディタの左側にある"Components" タブで、"+Add" ボタンを押して "Paper Sprite" コンポーネントをアタッチする。この辺りの概念はUnity と同じである。
アタッチした"Paper Sprite" コンポーネントに作成しておいた"SPR_Block" スプライト を設定する。
最後にコンパイルして保存すれば完了。BluePrint エディタ上で何か作業をした場合は、必ずコンパイルと保存が必要なので注意する。
試しに"BP_Block"をレベルビュー上にDrag & Drop すると、ちゃんと表示されることが確認できた。実際には、Unity の時と同様にPixel Per Unit の値を少し変更しているが、それは次回以降に説明予定。
次の記事
Unreal Engine で テトリス風ゲームを作ってみる#2 - 独習 Unity アプリ開発