在 Godot 中,TileSet
和 TileMap
是用于处理瓦片地图的两个关键概念,它们的作用和用途有明显的区别。以下是两者的详细对比:
1. TileSet(瓦片集)
TileSet 是资源,定义瓦片的内容和属性。
特点:
-
用来定义瓦片资源:
TileSet
是一个可复用的资源,存储了所有可用瓦片的图块(Tiles)、碰撞、动画、导航等信息。 -
设计阶段:
在TileSet
中,你可以:- 指定每个瓦片的纹理(图像)。
- 定义瓦片的碰撞形状(例如,某些瓦片是否可碰撞)。
- 添加瓦片动画。
- 为瓦片分配导航网格。
-
复用性:
一个TileSet
可以被多个TileMap
节点复用。
用途:
TileSet
是瓦片的“工具箱”,它定义了所有瓦片的规则、外观和行为,但不会直接显示在场景中。
2. TileMap(瓦片地图)
TileMap 是场景中的节点,用于绘制瓦片地图。
特点:
-
用来绘制瓦片:
TileMap
节点使用一个TileSet
资源,通过在场景中放置瓦片,创建实际的地图。 -
场景中显示:
TileMap
是在实际场景中放置瓦片地图的工具,可以直接在 2D 场景编辑器中绘制和编辑瓦片。 -
功能:
- 支持多种绘制工具,例如笔刷、矩形填充、桶工具等。
- 可以调整瓦片网格大小、对齐方式和偏移。
- 支持多图层(Godot 4.x 中为
TileMapLayer
子节点)。
-
与游戏逻辑交互:
TileMap
会根据TileSet
的定义自动生成碰撞、导航和动画效果,在运行时直接与游戏角色交互。
用途:
TileMap
是瓦片的“画布”,它使用 TileSet
的内容,实际展示并管理瓦片地图。
对比总结:
属性 | TileSet | TileMap |
---|---|---|
定义类型 | 资源:定义瓦片的内容和属性 | 节点:在场景中使用瓦片绘制地图 |
功能 | 定义瓦片外观、碰撞、导航和动画 | 绘制、显示和管理瓦片地图 |
是否可复用 | 可被多个 TileMap 使用 | 通常是一个具体的场景实例,不易复用 |
与场景的关系 | 不直接存在于场景中 | 存在于场景中,直接影响游戏表现 |
简单类比:
TileSet
是画家的调色板,包含所有的颜色和画笔(瓦片的定义)。TileMap
是画布,使用调色板中的颜色和画笔,绘制实际的作品(瓦片地图)。
在 Godot 中,选择绘制属性并为瓦片设置位掩码(Bitmask),主要是用于自动图块(Autotiling) 功能。这个功能可以让瓦片在绘制时,根据周围的瓦片自动调整形状,从而更高效地创建地图,比如铺设道路、草地或围墙。
以下是这个过程的详细解释:
1. 背景知识
-
位掩码(Bitmask):
位掩码用于定义瓦片与其周围瓦片的连接规则。通过设置位掩码,可以让 Godot 自动选择正确的瓦片形状,避免手动调整边界或连接点。 -
自动图块:
当你为一个瓦片设置了位掩码后,Godot 根据绘制时瓦片的相邻情况,自动决定要使用哪一个瓦片。
2. “在图中点击所有瓦片”的含义
这一步是为了选择瓦片图集中需要定义位掩码的瓦片。比如,你可能有一组瓦片用于地板,有不同的形状(拐角、边缘、中心等),你需要在 TileSet 编辑器中逐一选择它们。
步骤:
- 打开
TileSet
资源。 - 在
TileSet
编辑器中,点击瓦片图集中的瓦片,选中需要设置位掩码的所有瓦片。
3. “绘制位掩码”的含义
位掩码是通过在瓦片上手动绘制来定义的,表示该瓦片与哪些方向的相邻瓦片连接。
步骤:
-
进入
Bitmask
模式:
在TileSet
编辑器中,找到Bitmask
工具并切换到它。 -
选择位掩码类型(重要!):
- 2x2 位掩码: 简单位掩码,每个瓦片有 4 个部分(左上、右上、左下、右下)。适合简单地形。
- 3x3 位掩码: 细致位掩码,每个瓦片有 9 个部分(上下左右四边、四角和中心)。适合复杂连接规则。
-
绘制位掩码:
- 在瓦片的编辑区域内,点击或拖动鼠标绘制连接部分。
- 每个“被填充”的部分表示该瓦片与该方向的瓦片相连。
完整流程示例:
假设你有一组瓦片用于绘制一片草地,草地边缘会根据周围是否有其他草地瓦片来改变形状。
-
选择瓦片:
- 打开
TileSet
编辑器,选择草地相关的瓦片。
- 打开
-
设置位掩码:
- 进入
Bitmask
模式,为每个瓦片手动绘制连接规则。 - 中间的瓦片(完全包围)设置所有方向为“连接”。
- 边缘瓦片只设置相应的一侧为“连接”。
- 拐角瓦片则仅设置两个相邻方向。
- 进入
-
保存并应用:
- 保存
TileSet
设置。 - 在
TileMap
中使用这个TileSet
,绘制时草地瓦片会根据周围环境自动选择正确的瓦片形状。
- 保存
在为一个瓦片图集(TileSet)定义自动图块时,你需要:
- 选择所有要设置规则的瓦片。
- 切换到 Bitmask 模式,绘制每个瓦片的连接规则。
通过完成这些操作,绘制地图时会更加智能化和高效。