【Godot4】TileMapのセルを動的に変更する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Godot4】TileMapのセルを動的に変更する

2024-1-29 | , ,

Godot4のTileMapでセルを動的に変更したい!

概要

今回の記事では、Godot4のTileMapでセルを動的に変更する手順を掲載する。

仕様書

環境

  • Gogot 4.2.1

手順書

まず、TileSetTileMapの座標について簡単に説明してから、本題のセルを動的に変更する手順について説明する。

TileSetTileMapの座標

こんな感じのレトロな8x8のTileSetをサンプルとして作った。

座標が左上から始まって0から数える。

コードで座標をするにはVector2iを使う。第1引数がX軸、第2引数がY軸。

サンプルのTileSetの階段の座標を設定する例。

Vector2i(7, 4)

セルを動的に変更する

ui_accept(Enter)の入力があると扉を開閉、ui_cancel(ESC)の入力があると扉の座標のTileMapを削除(nullに)する例。

extends TileMap

var is_closed:bool = true

func _input(event):
    if event.is_action_pressed("ui_accept"):
        if is_closed:
            set_cell(0, Vector2i(6, 4), 0, Vector2i(0, 0))
            is_closed = false
        else:
            set_cell(0, Vector2i(6, 4), 0, Vector2i(5, 7))
            is_closed = true

    if event.is_action_pressed("ui_cancel"):
        set_cell(0, Vector2i(6, 4), 0, Vector2i(-1, -1))

TileMapのセルの値を設定してる部分。

set_cell(0, Vector2i(6, 4), 0, Vector2i(0, 0))

第1引数はTileMapのID、第2引数は値を取得するTileMapの座標、第3引数はTileSetのID、第4引数は値を取得するTileSetの座標。

下記のような感じでTileSetの座標を-1にするとTileMapの指定した座標の値を削除する。nullにする感じ。

set_cell(0, Vector2i(6, 4), 0, Vector2i(-1, -1))

最初は扉が閉まってる状態から始まる。

ui_accept(Enter)の入力があると扉が空き

もう一度ui_accept(Enter)の入力があると扉が閉まる。

ui_cancel(ESC)の入力があると問答無用で扉の座標を削除する。背景色の灰色が表示される感じ。

まとめ(感想文)

レトロゲーム風なのを作れそうな感じ。