Unity の Weighted Random Tile を作ってみる

前回は、Unity のアセット TopDown Engine のサンプルゲームの一つ KoalaDungeon で使われているパレット KoalaTilePalette の中にあった Weighted Random Tile を使ってみました。
Weighted Random Tile は 2D Tilemap Extras に含まれている Scriptable Tile の一つです。
指定したスプライト群の中から重みづけに応じてランダムにスプライトを選択し、タイルマップを塗るだけで、ランダムに絵柄が異なったタイルを配置することができました。

Unity Weighted Random Tile で簡単にランダムに絵柄を変えたタイルが配置できました。

Unity Weighted Random Tile で簡単にランダムに絵柄を変えたタイルが配置できました。

今回は、実際に独自のゲーム製作で活用できるように、Weighted Random Tile の作り方を紹介します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1、2D Tilemap Extras は 2.2.2 です。

Weighted Random Tile を作る

スプライトの準備

Weighted Random Tile は、ランダムに選ばれたスプライトが割り当てられたタイルタイルマップに配置します。
そのため、スプライトをいくつか準備しておく必要があります。
今回は分かりやすく数字のスプライトにしました。

WeightedRandomTileTestSprites

WeightedRandomTileTestSprites.png (16x16x9) 48x48px

これを Unity プロジェクトの任意のフォルダに追加し、Inspector ウィンドウで Sprite として設定します。

Texture TypeSprite (2D and UI) に変更すると、下の項目も変わります。
今回は一枚の画像の中に9枚のスプライトが含まれているので Sprite ModeMultiple に設定します。
Pixels Per Unit はサンプルの KoalaTilePalette に合わせ 16 にします。
Filter Mode はドット絵に適した Point (no filter) にしました。
設定ができたら [Sprite Editor] ボタンSprite Editor ウィンドウを開きます。

Weighted Random Tile のテストで用いるスプライトの設定

Weighted Random Tile のテストで用いるスプライトの設定

Sprite Editor ウィンドウを開き、 左上の [Slice] プルダウンリストを出し、 Type[Grid By Cell Size] を選び、 Pixel Size を スプライト 1 枚のサイズ 16 × 16 に設定し、[Slice] ボタンを押して 9 枚のスプライトに分割します。

Weighted Random Tile のテストで用いるスプライトの分割の設定

Weighted Random Tile のテストで用いるスプライトの分割の設定

Project ウィンドウで、ファイルの右側のアイコンを押すと、分割されたスプライトが確認できます。

Weighted Random Tile のテストで用いるスプライト 9 枚が Project ウィンドウでも確認できました.

Weighted Random Tile のテストで用いるスプライト 9 枚が Project ウィンドウでも確認できました.

これで Weighted Random Tile の作成に用いるスプライトが準備できました。

Weighted Random Tile アセットの作成

Project ウィンドウのフォルダの余白で右クリックし、ポップアップメニュー[Create]→[2D]→[Tiles]→[Weighted Random Tile]を選択します。

Unity Projectウィンドウの右クリックポップアップメニューCreate→2D→Tiles→Weighted Random Tile を選択します。

Unity Projectウィンドウの右クリックポップアップメニューCreate→2D→Tiles→Weighted Random Tile を選択します。

Project ウィンドウに「New Weighted Random Tileアセット作成されました。
※ New を Test1 にリネームしました。

Inspector ウィンドウをみると Number of Sprites0 なので、スプライトWeight (選ばれやすさの重みづけ) を 設定する枠が 1 つもありません

New Weighted Random Tile アセットが作成できました(リネームしました)。 新規作成直後は要素数は 0 です。

New Weighted Random Tile アセットが作成できました(リネームしました)。 新規作成直後は要素数は 0 です。

Weighted Random Tile アセットの設定

Weighted Random Tile アセットを新規作成したので、Sprite と Weight (選ばれやすさの重みづけ) を設定します。
設定するための枠確保するため Inspector ウィンドウNumber of Sprites0 から追加するスプライトの個数の 9 に変更します。
個数を変更すると、その個数分の空の要素が作られました。

Weighted Random Tile アセットの Number of Sprites を 9 に設定すると 9 個の空の要素が作られました。

Weighted Random Tile アセットの Number of Sprites を 9 に設定すると 9 個の空の要素が作られました。

Sprite の枠に、先ほど作成した Sprite を割り当てます。
選ばれやすさの重みづけを設定する Weight は Sprtite に書いた数字と同じにしました。

Unity WeightedRandomTile アセットを選択し Inspector ウィンドウで Sprite と重みづけの値を設定します。

Unity WeightedRandomTile アセットを選択し Inspector ウィンドウで Sprite と重みづけの値を設定します。

1~9 までの Sprite 画像を設定し、Weight にはそれぞれの画像の数値選ばれやすさの重みづけとして設定しました。

Unity Test1 Weighted Random Tile アセットの設定

Unity Test1 Weighted Random Tile アセットの設定

作成した Weighted Random Tile アセットを Project ウィンドウから Tile Palette ウィンドウのパレット領域の任意のマスドラッグ&ドロップして、タイルを登録します。

作成した Weighted Random Tile アセットを Tile Palette のパレット領域へドラッグ&ドロップで登録します。

作成した Weighted Random Tile アセットを Tile Palette のパレット領域へドラッグ&ドロップで登録します。

これで、サンプルのタイルパレットで独自のタイルを使えるようになりました。

作った Weighte Random Tile を使ってみる

タイルパレットに登録した Weighted Random Tile選択し、ペイントブラシ・塗りつぶし・矩形ツールでタイルマップにタイルを配置することができました。
Weight が大きい方が選ばれやすいので、1 の Sprite は少なく、 9 の Sprite が多く選ばれています。

Unity 作った Weighted Random Tile を使っている様子。

Unity 作った Weighted Random Tile を使っている様子。

Unity Weighted Random Tile を作成して使った様子

Unity Weighted Random Tile を作成して使った様子

Weighted Random TileColor を変更すると、タイルの色、スプライトの全体的な色味を変えることもできます。
Weighted Random Tile アセットを複製して、色味をかえて、暗いタイルや、少し緑色っぽいタイルを作っても良いでしょう。

Unity の Weighted Random Tile の Color を変えると全体の色味を変更できます。

Unity の Weighted Random Tile の Color を変えると全体の色味を変更できます。

Collider Type では、作成するタイルのコライダーの形状を選択できます。
None の場合はコライダーは作られません。
Sprite の場合は Sprite に基づいた形状Grid の場合は四角形や六角形などのタイルマップのマスの形状に応じてコライダーが作成されます。
参照:Tilemap Collider 2D – Unity マニュアル

Weighted Random Tile の Color と Collider Type を変更できます。

Weighted Random Tile の Color と Collider Type を変更できます。

今回はここまで

前回使ってみた Weighted Random Tile独自作ることができました。
次回は KoalaTilePalette にあったもう一つの Scriptable TileRuleTile」を紹介します。

参照サイト Thank You!

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました