You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Godot 4.2.1中利用TileSheet的XML文件构建等距Tilemap?

在Godot 4.2.1中使用Kenney不等尺寸等距Tile构建Tilemap

一、提取XML中的Tile精确信息

Kenney提供的XML文件标注了每个Tile在SpriteSheet上的x/y坐标、width/height尺寸及名称,你可以用两种方式获取这些参数:

  • 手动提取:用记事本打开XML文件,逐个记录每个Tile的参数,适合Tile数量较少的场景。
  • 脚本批量解析:写一段GDScript自动读取XML,适合批量操作,示例代码如下:
extends Node

func _ready():
    var xml_parser = XMLParser.new()
    var error = xml_parser.open("res://path/to/your/tilesheet.xml")
    if error != OK:
        print("XML文件打开失败")
        return

    while xml_parser.read() == OK:
        if xml_parser.get_node_name() == "SubTexture":
            var tile_name = xml_parser.get_attribute_value("name")
            var x = int(xml_parser.get_attribute_value("x"))
            var y = int(xml_parser.get_attribute_value("y"))
            var width = int(xml_parser.get_attribute_value("width"))
            var height = int(xml_parser.get_attribute_value("height"))
            
            # 可将参数存入数组,或直接用于创建Tile
            print(tile_name, ": ", x, ",", y, " | ", width, "x", height)
    xml_parser.close()

二、创建并配置TileSet

  1. 在Godot中新建TileSet资源,导入你的Kenney等距TileSheet纹理。
  2. 手动添加Tile:
    • 打开TileSet编辑器,点击左上角「Add Single Tile」按钮。
    • 在纹理视图中,根据XML里的x/y/width/height框选对应Tile区域。
    • 关键设置:将Tile的原点(Anchor)设为底部中心(即(width/2, height)),否则摆放时会错位。
    • 重复操作添加所有Tile,可按名称分组方便管理。
  3. 脚本批量添加(可选):
    • 基于上述XML解析脚本,扩展代码直接在TileSet中创建Tile:
      var tile_set = load("res://your_tileset.tres")
      var texture = load("res://your_tilesheet.png")
      
      # 解析到每个SubTexture时执行:
      var tile_id = tile_set.create_tile()
      tile_set.tile_set_texture(tile_id, texture)
      tile_set.tile_set_region(tile_id, Rect2(x, y, width, height))
      tile_set.tile_set_offset(tile_id, Vector2(width/2, height)) # 设置底部中心原点
      tile_set.tile_set_name(tile_id, tile_name)
      

三、配置TileMap并构建场景

  1. 场景中添加TileMap节点,将创建好的TileSet赋值给它的「Tile Set」属性。
  2. 将TileMap的「Tile Map Mode」改为Isometric(等距模式)。
  3. 调整「Cell Size」:等距Tile的单元格尺寸通常设为Tile基础尺寸的一半,比如多数Tile为128x64时,Cell Size设为(64, 32),Tile会自动按等距网格排列。
  4. 现在即可在TileMap编辑器中选择不同Tile,在网格上摆放构建场景。

注意事项

  • 因Tile尺寸不同,大建筑类Tile可能需要占据多个单元格,可在TileSet中设置Tile的「Cell Coverage」适配。
  • 若出现Tile错位,优先检查Tile原点是否为底部中心,以及TileMap的Cell Size是否匹配Tile比例。

内容的提问来源于stack exchange,提问作者user23783268

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:33:39