【Unity】タワーディフェンス(2) マップの作成【クソゲー制作】

タワーディフェンスを作る(2)

Unityで2Dタワーディフェンスを作ります。今回はマップを作ります。UnityのTilemapという機能を使ってみます。

環境
  • Mac mini (M1, 2020)
  • Unity 2022.3.36f1
目次

プロジェクトの作成

まずはプロジェクトの作成です。

  1. Unity Hubで「新しいプロジェクト」ボタンをクリックします。
  2. テンプレートは「2D (Built-In Render Pipeline) 」を選択します。
  3. プロジェクト名を「TowerDefense」にします。お好みでなんでもOKです。
  4. 「プロジェクトを作成」ボタンをクリックします。

最初のちょっとした設定

シーン名の変更

デフォルトで作成されているシーンの名前が「SampleScene」なので、これを「Stage1」に変更します。

今回は、TitleScene, Stage1, Stage2, Stage3, Stage4, Stage5 の6個のシーンでゲームを作っていきたいと思っています。で、最初に制作するシーンがStage1になります。

アスペクト比の固定

毎度おなじみ、アスペクト比を固定するための設定をします。パソコン用のブラウザゲームとしてリリースするので、アスペクト比を16:9に固定します。

  1. ヒエラルキーで右クリック「UI > Canvas」を選択し、Canvasオブジェクトを作成します。
  2. Canvasのインスペクターで「Canvas Scaler > UI Scale Mode」「Scale With Screen Size」に変更します。
  3. 「Reference Resolution(参考解像度)」X: 540、Y: 960 にします。アスペクト比が16:9ならばなんでもOKです。
  4. 「Screen Match Mode」「Expand」にします。
  5. Canvasの配下に空のオブジェクトを作り、名前を「AspectRatioFixer」にします。
  6. AspectRatioFixerのインスペクターで「Rect Transform」「Width」540「Height」960にします。

今後作成するUIオブジェクトはAspectRatioFixerの配下に入れます。

マップの作成

マップの作成にはTilemapを使います。Tilemapとは、2Dゲームで効率的に地形などを作成するためのUnityの機能です。

画像のインポート

マップ用の画像を用意してインポートします。Kenneyさんから拝借したアセットを私がちょっと加工したものを使っています。

STEP

Assetsフォルダの下にImagesフォルダを作成し、さらにその下にMapフォルダを作成します。そこに画像をドラッグ&ドロップしてインポートします。

タワーディフェンス05
STEP

インポートした画像のインスペクターで「Pixels Per Unit」64に変更します。画像を全選択して値を変更し「Apply」ボタンを押せばまとめて変更できます。

タワーディフェンス06

Pixels Per Unitとは、ゲームワールド内の1ユニットあたりのピクセル数を指定する設定です。Tilemapの1マスが1ユニットです。今回使用する画像は1辺が64ピクセルなので64にしています。

Tile Paletteの作成

Tile Paletteとは、画像をTileとして管理しTilemapに簡単に配置するためのツールです。

STEP

メニューバーの「Window > 2D > Tile Palette」を選択して Tile Paletteウインドウを開きます。

タワーディフェンス07

お好みで適当な場所にドラッグしてタブ化してください。

STEP

左上の「No Valid Palette」をクリックして「Create New Palette」を選択します。

タワーディフェンス08
STEP

すると、新しいパレットを作成するヤツが開きます(このUIの名前なんていうの)。

「Name」をFieldにして(なんでもいい)「Create」ボタンを押します。

タワーディフェンス09
STEP

保存場所を聞かれるので「Assets > Tilemaps」フォルダを作って保存します。

タワーディフェンス10
STEP

パレット内の「Drag Tile, Sprite or Sprite Texture assets here.」と書かれているところにTile化する画像をドラッグ&ドロップします。

保存場所を聞かれるので「Assets > Tilemaps」に保存します。

Tilemapの作成

マップは2層のレイヤー構造にします。1つ目のレイヤーは草地だけのマップ、2つ目のレイヤーには道や障害物を描画します。2つ目のレイヤーのオブジェクトに当たり判定をつけることによって、砲台を設置できない場所を検知する仕組みを作ります。

STEP

まず、レイヤーを作成します。

なんらかのオブジェクトを選択してインスペクターの右上の「Layer」をクリックして「Add Layer…」を選択します。

タワーディフェンス11
STEP

「Sorting Layers」を開いて2つのレイヤーを追加します。名前はWayObjectにしました。

タワーディフェンス12

最初からあるDefaultは草地、Wayは道や障害物、Objectは敵や砲台を描画するレイヤーです。リストの下にある要素ほど前面に表示されます。

STEP

マップオブジェクトを入れておくためのフォルダの役割を果たすオブジェクトを作成します。

ヒエラルキーで右クリック「Create Empty」を選択して空のオブジェクトを作成します。。名前をMapにします。

STEP

草地を描画する用のTilemapオブジェクトを作成します。

Mapオブジェクト上で右クリック「2D Object > Tilemap > Rectangular」を選択します。Mapの配下に「Grid > Tilemap」というオブジェクトが作成されます。

タワーディフェンス13

Rectangularは四角という意味で、四角いTilemapを作成します。他に六角形(Hexagontal)や斜め上から見た四角(Isometric)のTilemapを作ることもできるようです。

Gridの名前をGrid_Baseに変更します。

「Grid_Base > Tilemap」のインスペクターで「Tilemap Renderer > Additional Settings > Sorting Layer」Defaultになっていることを確認してください。

STEP

道や障害物を描画するためのTilemapオブジェクトを作成します。

Mapオブジェクト上で右クリック「2D Object > Tilemap > Rectangular」を選択します。

Gridの名前をGrid_Wayに変更します。

「Grid_Way > Tilemap」のインスペクターで「Tilemap Renderer > Additional Settings > Sorting Layer」Wayに変更します。

タワーディフェンス14

カメラの設定

Main Cameraオブジェクトのインスペクターで「Camera > Size」6に変更します。

タワーディフェンス15

ここで指定した数値によってTilemapのマス目の大きさが変わります。具体的には数値 * 2がTilemapの縦のマス目の数になります。

Tilemapにタイルを配置

STEP

ヒエラルキーで「Grid_Base > Tilemap」オブジェクトを選択します。Sceneビューに表示されているマス目がタイルです。ここにTile Paletteのタイルを配置していきます。

Tile Paletteの上部に、ペイント、塗りつぶし、スポイト、消しゴムなどのツールがあるのでこれを使ってタイルを配置していきます。

タワーディフェンス16

このTilemapではすべてのタイルを草地にするので左から4番目の選択範囲塗りつぶしツールを使うと簡単です。

タワーディフェンス17
STEP

ヒエラルキーで「Grid_Way > Tilemap」オブジェクトを選択します。

UIを表示するための領域に黒いタイルを敷きつめます。上1マス、右5マスに配置しました。

タワーディフェンス18
STEP

同じく「Grid_Way > Tilemap」オブジェクトを選択している状態で、道と障害物を配置します。

タワーディフェンス19

さいごに

ちゅーわけで、今回はマップを作成しました。コードは書いてないけど、ゲームが形になっていくのを見るのは楽しいですね。

次回からたぶんコードを書くことになります。

でわでわ

タワーディフェンスを作る(2)

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次