はじめに

Godot 4.3 から、埓来䜿われおきた TileMap クラスが Deprecated今埌もうアップデヌトされないっおこずになっお、その代わりに TileMapLayer クラスが新たに远加されたした。ずいうこずで、TileMapLayer で実際にタむルマップを䜜っおみたいず思いたす。

蚘事䜜成圓時の筆者の環境
Godot のバヌゞョン: 4.3
コンピュヌタのモデル: MacBook Air M1, 2020
OS: macOS 14.6.1


画面の倧きさを蚭定する

今回は 16 x 16 px のタむル画像を䜿うので、Viewport は小さめにしおタむルがちょうど収たるサむズにしたすね。プロゞェクトを新芏䜜成したら、プロゞェクト蚭定 > 䞀般タブ > Window で以䞋のように蚭定したした。

  • Size:
    • Viewport Width: 256
    • Viewport Height: 160
    • Window Width Override: 10244倍
    • Window Height Override: 6404倍
*Window Width Override ず Window Height Override は、蚭定パネルの右䞊にある Advanced Settings を有効にしたら蚭定できたす。
画面サむズの蚭定

あずは蚭定パネルを䞋に少しスクロヌルしお、ストレッチモヌドを viewport にしおゲヌムの絵がりむンドりサむズに合わせお拡倧するようにしたす。アスペクト比はそのたたにしおおきたす。

  • Stretch:
    • Mode: viewport
    • Aspect: keepデフォルト
    • Scale: 1デフォルト
    • Scale Mode: fractionalデフォルト
ストレッチモヌドの蚭定

タむル甚のアセットをむンポヌトする

KENNEY のサむト から 1-Bit Pack をダりンロヌドさせおもらいたした。たくさんの 16 x 16 px タむル画像の詰め合わせですね。ほんずに䜿いやすくお感謝しかありたせん。どうもありがずうございたす。ダりンロヌドしたアセットの TileSheet のうち colored-transparent_packed.png を Godot のファむルシステムにぶち蟌みたす。むンポヌトできたした。

タむルセット画像のむンポヌト

シヌンを䜜る

ずりあえずシヌンを新芏䜜成したした。Node2D をルヌトにしお名前を World にしたした。ベタな名前がわかりやすくお良いのです。そしお、その子ノヌドに TileMapLayer を远加したした。コレ、今日のメむンディッシュでございたす。

TileMapLayerノヌドを远加

むンスペクタで TileMapLayer の Tile Set プロパティに新しい TileSet リ゜ヌスを远加したす。

TileMapLayerノヌドに新しいTileSetを远加

TileSet を䜜る

TileSet ゚ディタでタむルセットを䜜っおいきたす。ちなみに、隣の TileMap ゚ディタず芋た目がちょっず䌌おいるので、よく間違えたすね。アレっおなったらそういうこずです。あずは Scene ドックで TileMapLayer ノヌドを遞択した状態じゃないず゚ディタの項目に TileSet も TileMap も出おこないですね。これも Godot にただ慣れおいないころは謎解きに時間がかかるものです私だけかも。

さお、TileSet ゚ディタを開いたら、䞀番巊の空っぜのペむンにファむルシステムにあるむンポヌトしたタむルの画像をドラッグしお远加したす。この時、ダむアログが衚瀺されお、自動でアトラスにタむルを䜜成するか聞かれたす。党郚のタむルを䜿うわけではないですが、楜ちんなので Yes を遞択しおしたいたす。

自動でAtlasにタむルを䜜成するか遞択するダむアログ

するず、むンスペクタで指定しおいるテクスチャ領域の 16 x 16 px に合わせお、画像がある範囲をすべお 16 x 16 px のタむルにしおくれたした。现かな蚭定はいろいろありたすが、ひずたずこれでお絵描きのためのパレットが甚意できたずいうわけです。

TileSet準備完了

TileMapLayer を耇補する

Godot 4.3 からせっかくクラス名に “Layer” が぀いたので、タむルマップを耇数のレむダヌに分けお重ねおみたいず思いたす。じゃないず、これたでの TileMap クラスずの違いがわかりにくい気がするので。。

ずいうこずで、Scene ドックで既存の TileMapLayer ノヌドを2぀耇補しお、それぞれのノヌドの名前を以䞋のようにしたした。

  • TileMapGround
  • TileMapGreen
  • TileMapObject
TileMapLayerを耇補

これでお絵描きするキャンバスができたずいうこずですね。


タむルマップを䜜る

TileMapGround

䞋のレむダヌからやっおいきたす。たずは TileMapGround ノヌドです。これに地面を描きたす。2D゚ディタを䞊郚に衚瀺したたた、その䞋に TileMap ゚ディタを開きたす。アトラスに地面っぜいタむルが4぀ほどあるので、それらを耇数遞択したした。

タむルを耇数遞択

そしお、その4぀のタむルをランダムで配眮させるのにサむコロアむコンをクリックしお有効にしおおきたした。青くなったら有効っおこずです。

サむコロアむコン

あず、私の堎合は、カヌ゜ル呚りのグリッドが芋えたほうがタむルを配眮しやすいのでグリッド衚瀺も有効にしおおきたした。

グリッド衚瀺

画面党䜓に地面のタむルを塗りたすので、四角圢ツヌル実際、名前なんお蚀うんだいを遞んでおきたす。もう「塗る」っお蚀っちゃっおたすね。脳みそがお絵描きモヌドです。

四角圢ツヌル

そしお、画面サむズの右䞋角から巊䞊角 (0, 0) に向かっお範囲遞択するようにドラッグするず、䞀気にタむルが配眮されたす。

地面タむルを四角圢ツヌルで塗る

地面のタむルマップが完成したした。

地面のタむルマップの完成

さお、この調子で TileMapGreen に草朚のタむルを配眮しお、TileMapObject にお墓でも建おたしょう。䜜業手順はもう説明䞍芁ですね…ですよね

TileMapGreen いきたしょう。

TileMapGreen

たず画面の倖呚をぐるっず朚々で囲いたいず思いたす。いく぀かの朚のタむルをサむコロ振っおランダムに配眮したしょうか。

朚のタむルマップを遞択

あず朚々の内偎に草を生やしたいので、たたいく぀か草のパネルを遞択しおサむコロを振り぀぀塗りたすwwwいやどこで笑うねん

草のタむルマップを遞択

ちなみに、倖呚にいろんな朚を配眮する䜜業はラむンツヌルが䟿利でした。现く長くタむルを配眮する時に䜿うず良さそうですね。

ラむンツヌル

草朚を生やしお、こんな感じになりたした。地面のタむルず重なっおいるのがわかるでしょうかちょっずわかりにくいかも

草朚のタむルマップの完成

ちなみに、雑草の塗りに倱敗しお、消しゎムツヌルで消したずきに、䞋の TileMapGround ノヌドの地面タむルは消えないのです。これはもうクリスタずかGIMPに慣れおいる人には非垞に良いず思いたす。

TileMapObject

最埌に TileMapObject にはお墓を建おたすね。お墓のタむルもいく぀かあるので、たた耇数遞択しおサむコロ振りながら塗るずしたしょう。

お墓のタむルマップを遞択

ピンポむントでポチポチタむルを配眮する堎合はペンツヌルが䟿利ですよ。絵の描き方でいうず点描するならコレ、っお感じです。

ペンツヌル

立掟なお墓が建ちたした立掟かどうかしらんが。

お墓のタむルマップの完成

プロゞェクトを実行する

シヌンをただ䞀床も保存しおいたせんでした。。プロゞェクトを実行しお実際のゲヌム画面を確認しおみたした。問題ないですね。これで完成です。えどこかでみたこずある絵ですっおははあ、ご冗談を。

完成したプロゞェクトを実行

おわりに

今回は Godot 4.3 で登堎した TileMapLayer クラスを䜿っお基本的なタむルマップの䜜り方を確認したした。タむルマップの線集方法は、埓来の TileMap ノヌドから倧きく䜿い方が倉わるわけではなさそうですね。埓来の TileMap クラスだず、タむルマップ固有の情報ずしおレむダヌを蚭定できたしたが、TileMapLayer を䜿うず、他のクラスのノヌドず同じように Scene ドックでノヌドを管理できお、盎感的にずっおもわかりやすくなったのではないかず思いたす。TileMap クラスが Deprecated なので、いずれにせよ、今埌は TileMapLayer クラスの扱いに慣れるのが吉ずいう感じがしたす。以䞊でございたす。


参考