Godot 4 自动地形系统(AutoTileSet / Terrains)完全指南

2026-07-09
368713 分钟
...

前言

在 2D 游戏开发中,地形瓦片(tile)的拼接是一个绕不开的问题。想象一下:你有一片草地、一条河流、一段平台——如果每一块边缘、角落、过渡区域都要手动选择对应的瓦片图,工作量将是巨大的。自动地形系统就是为了解决这个问题而生的。

一、什么是自动地形(Autotiling)?

自动地形的核心思想很简单:你只管画,引擎帮你选对瓦片

当你在 TileMap 上绘制地形时,引擎会自动检测每个瓦片的上下左右邻居,然后根据预设的规则,选择最合适的瓦片变体——边缘、内角、外角、纯内部等等。你不需要记忆几十种瓦片变体对应什么场景,系统会帮你搞定。

典型应用场景

  • 草地与泥土的过渡
  • 平台的边缘和角落
  • 河流、道路的连接
  • 洞穴墙壁的自动生成
  • 任何需要"邻居决定外观"的地形系统

二、Godot 3.x → 4.x:从 Autotile 到 Terrain 的进化

Godot 3.x 的 Autotile

在 Godot 3.x 中,自动拼接功能叫做 Autotile。它的特点是:

  • Autotile 是一种特殊的瓦片类型,与普通瓦片区分开
  • 使用位掩码(bitmask)模式:2×2、3×3、3×3 minimal
  • 只能处理同一种地形的自动拼接
  • 不同地形之间(如草地→泥土)的过渡需要手动处理

Godot 4.x 的 Terrain 系统

Godot 4 将 autotile 重新设计为 Terrain(地形)系统,带来了质的飞跃:

  • Terrain 不再是特殊瓦片类型,而是附加在普通瓦片上的属性
  • 支持多种地形之间的过渡(一个瓦片可以同时定义多种地形)
  • 引入 Terrain Set(地形集) 的概念,组织更灵活
  • 提供更智能的绘制模式:Connect、Path、手动覆盖

简单来说,Godot 4 的地形系统比 3.x 强大得多,也更易用。

三、核心概念

3.1 Terrain Set(地形集)

Terrain Set 是地形的组织容器。每个 TileSet 可以有多个 Terrain Set,每个 Terrain Set 有三种匹配模式:

匹配模式说明对应 Godot 3.x
Match Corners and Sides同时匹配角落和边3×3 minimal
Match Corners只匹配四个角落2×2
Match Sides只匹配上下左右四边3×3

💡 选择建议:大多数情况下推荐使用 Match Corners and Sides,它能提供最自然的过渡效果。

3.2 Terrain(地形)

Terrain 是 Terrain Set 内的具体地形类型。例如:

  • Terrain Set 0:自然地形
    • Terrain 0:草地
    • Terrain 1:泥土
    • Terrain 2:沙地
  • Terrain Set 1:建筑地形
    • Terrain 0:石墙
    • Terrain 1:木墙

关键特性:一个瓦片可以同时属于多个 Terrain,这意味着草地和泥土可以在同一个瓦片上共存,实现平滑过渡。

3.3 Peering Bits(邻接位)

这是自动地形系统的核心机制。每个瓦片有 8 个邻接位(上下左右 + 四个对角),每个位的值决定了该瓦片在什么邻居条件下会被选中:

  • 值 ≥ 0:对应 Terrain ID,表示该方向需要是同一种地形
  • 值 = -1:表示该方向需要是(没有地形)

例如,一个草地边缘瓦片的配置可能是:

上方上左上右):-1需要空
左方0需要草地
右方0需要草地
下方下左下右):0需要草地

这个瓦片只会在"上方是空的,其他方向都是草地"时被选中——也就是草地的上边缘

四、实战:从零配置自动地形

步骤 1:准备瓦片图集

你需要一张包含所有地形变体的瓦片图集(tilesheet)。一个完整的地形集通常包括:

  • 纯内部瓦片(四周都是同种地形)
  • 四个边缘瓦片(上下左右)
  • 四个外角瓦片
  • 四个内角瓦片
  • 四个 T 型连接瓦片

对于 Match Corners and Sides 模式,完整的地形集可能需要 25+ 种变体

步骤 2:创建 TileSet

  1. 创建 TileMapLayer 节点
  2. 在 Inspector 中创建新的 TileSet 资源
  3. 设置瓦片大小(如 64×64)
  4. 将瓦片图集拖入 TileSet 面板
  5. 选择"自动创建瓦片"

步骤 3:创建 Terrain Set

  1. 选中 TileMapLayer 节点
  2. 在 Inspector 中展开 TileSet 属性
  3. 找到 Terrain Sets 部分,点击 Add Element
  4. 选择匹配模式(推荐 Match Corners and Sides)

步骤 4:创建 Terrain

  1. 在刚创建的 Terrain Set 下,点击 Add Element 创建 Terrain
  2. 为 Terrain 命名(如 “Grass”)
  3. 设置颜色(用于在编辑器中区分不同地形)

步骤 5:配置瓦片的地形属性

  1. 在 TileSet 编辑器中切换到 Select 模式
  2. 点击一个瓦片
  3. 在中间栏展开 Terrains 部分
  4. 设置 Terrain SetTerrain ID
  5. 配置 Terrain Peering Bits(8 个方向的邻接位)

步骤 6:绘制地形

  1. 在 TileMap 编辑器中切换到 Terrains 标签
  2. 选择要绘制的地形
  3. 选择绘制模式(Connect / Path / 手动)
  4. 开始绘制!

五、三种绘制模式详解

Connect 模式

最简单常用的模式。绘制时,引擎自动处理所有邻居关系。

  • 优点:操作简单,适合大面积绘制
  • 缺点:相邻的同种地形会自动连接(如两条紧挨的路会合并)

Path 模式

更灵活的模式。地形只在同一笔画内连接,松开鼠标后断开。

  • 优点:可以画紧挨但不相连的路径
  • 缺点:需要更多手动操作

🎯 实际案例:画两条紧挨的河流,用 Connect 模式它们会合并,用 Path 模式可以保持独立。

手动选择瓦片

完全手动控制。从地形的瓦片列表中选择特定瓦片放置。

  • 优点:完全精确控制
  • 缺点:失去自动化优势

适用于处理引擎自动选择无法覆盖的特殊情况。

六、实用技巧

6.1 多地形过渡

一个瓦片可以同时定义多种地形。例如:

  • 一个"草地-泥土过渡"瓦片可以同时标记为 Terrain 0(草地)和 Terrain 1(泥土)
  • 这样在草地和泥土的交界处,引擎会自动选择同时属于两种地形的过渡瓦片

6.2 批量设置属性

如果大量瓦片有相同的地形配置:

  1. 在 Select 模式下按住 Shift 多选瓦片
  2. 在中间栏统一设置 Terrain 属性

或者使用属性绘制模式

  1. 选择要绘制的属性
  2. 在右侧面板"刷"到瓦片上

6.3 颜色区分

为不同 Terrain 设置不同颜色,在编辑器中一目了然:

  • 草地:绿色
  • 泥土:棕色
  • 沙地:黄色
  • 水面:蓝色

6.4 与碰撞/导航结合

地形瓦片同样可以添加碰撞体和导航多边形。建议:

  • 边缘瓦片添加碰撞(防止穿越)
  • 内部瓦片设置导航区域(用于寻路)

6.5 性能优化

  • 使用 Rendering Quadrant Size 控制渲染批次大小
  • 只为需要碰撞的瓦片添加碰撞体
  • 合理使用多个 TileMapLayer(如背景层、地形层、装饰层)

七、常见问题

Q:为什么我的瓦片没有自动切换?

检查以下几点:

  1. Terrain Set 和 Terrain 是否已正确创建
  2. 瓦片的 Terrain 属性是否已设置(不是 -1)
  3. Peering Bits 是否正确配置
  4. 是否在 Terrains 绘制模式下操作(而非普通 Paint 模式)

Q:瓦片边缘出现缝隙?

  • 检查瓦片图集是否有 margin(边距)
  • 确保 Texture Region Size 与实际瓦片尺寸匹配
  • 开启 Use Texture Padding 防止纹理出血

Q:如何从 Godot 3.x 迁移?

Godot 4 的导入器会自动将 3.x 的 Autotile 转换为 Terrain 系统,但建议手动检查:

  1. 验证转换后的 Peering Bits 是否正确
  2. 测试所有地形过渡是否正常
  3. 调整不满意的自动选择结果

八、总结

Godot 4 的 Terrain 系统是自动拼接地形的终极解决方案。它比 3.x 的 Autotile 更强大、更灵活,也更易用。掌握它之后,你将不再需要手动挑选每一块边缘和角落瓦片——把精力放在游戏设计本身上。

关键记忆点

  • Terrain Set → 组织地形(选择匹配模式)
  • Terrain → 具体地形类型(草地、泥土等)
  • Peering Bits → 决定瓦片何时被选中(8 个方向的规则)
  • Connect/Path/手动 → 三种绘制策略

 

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
godot2026-07-27
Godot 4 常用 UI 节点详解
Godot 4 常用 UI 节点详解 在 Godot 4 中,UI 系统基于 Control(控件) 节点构建。所有 UI 节点都继承自 Control,形成一棵完整的 UI 树。与游戏引擎中常见的"Canvas + DOM"模式不同,Godot 的 UI 系统是声明式的——你在场景中搭好节点树,引擎自动完成布局计算。 一、布局系统:Container 家族 Container 是 Godot UI 的 骨架 。它决定了子节点的大小和位...
学习
godot2026-06-25
Godot 中 zindex 和 ysort 的区别总结
在 Godot 2D 游戏开发中,角色、树木、怪物、地面、技能特效、UI 都需要正确的显示顺序。比如角色走到树前面时,角色应该挡住树;角色走到树后面时,树又应该挡住角色。 这种显示顺序主要和两个概念有关: 和 。 其中 用来手动控制图层顺序, 用来根据物体的 Y 坐标自动排序。 一句话理解 是手动分层。 是根据 Y 坐标自动排序。 简单来说: | 属性 | 作用 | 适合场景 | | | | | | | 数值越大,显示越靠前 | 地面、...
学习
godot2026-06-11
Tileset 资源图的标准和规范
一、什么是 Tileset 资源图 Tileset,中文通常叫“图块资源图”或“瓦片图”,是 2D 游戏中非常常见的一种地图资源组织方式。 简单来说,Tileset 就是把很多小图块按照固定尺寸排列在一张图片里。游戏引擎会按照固定的格子大小去切割这张图片,然后把每个小格子当成一个独立的地图块使用。 比如一个 32×32 像素的 Tileset 中,每一个 tile 都是 32×32 像素。地图编辑器或游戏引擎会按照 32×32 的网格,...
学习
godot2026-05-29
用户角色精灵图制作角色的完整流程
在 2D RPG 游戏里,角色通常不是用一张单独图片完成的,而是用一张“角色精灵图”来做。 所谓角色精灵图,通常是一张包含多个动作帧的大图。比如角色向下走有 4 帧,向左走有 4 帧,向右走有 4 帧,向上走有 4 帧。Godot 会根据这些帧不断切换图片,看起来角色就动起来了。 这篇文章主要介绍:拿到一张角色精灵图之后,如何在 Godot 中把它做成一个可以正常移动、播放动画、和地图产生遮挡关系的角色。 一、先理解角色精灵图是什么 角...
学习
godot2026-05-26
Godot 节点系统详细介绍
Godot 里最核心的东西不是“类”,也不是“组件”,而是 节点 Node 。 你可以把 Godot 的节点理解成: 在前端里,一个页面是由很多 DOM 元素组成的; 在 Godot 里,一个游戏场景是由很多 Node 节点组成的。 比如一个玩家角色,可能不是一个单独对象,而是这样的结构: 这里的 是根节点,下面挂着显示图片、播放动画、碰撞检测、摄像机、音效等子节点。 Godot 官方文档也把节点和场景放在一起讲:多个节点组成树状结构后...
学习
godot2026-05-19
第一部分 01:Godot 基础世界观
先建立一个总认知: Godot 做游戏的核心思路是:用一个个 Node 组成 Scene,再把 Scene 放进 SceneTree 运行。代码 Script 负责控制 Node,Resource 负责存数据,Signal 负责对象之间通信。 你可以先把 Godot 想成一个“可视化的前端工程”: | Godot | 前端类比 | 说明 | | | | | | Project | 一个前端项目仓库 | 整个游戏工程 | | Scene...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录