学习视频:https://player.bilibili.com/player.html?bvid=BV1NC4y1q7bZ&autoplay=0
资源下载:https://cupnooble.itch.io/sprout-lands-asset-pack
https://www.patreon.com/posts/scripts-godot-4-68719570
原视频地址:https://www.youtube.com/watch?v=Luf2Kr5s3BM
地图编辑部分教程总结
这部分的核心是使用 TileMap 节点和 TileSet 资源来构建一个可交互、有层次感且带有碰撞的游戏世界。
1. 创建并配置 TileMap
- 添加节点 :在
GameLevel场景中,右键添加一个TileMap子节点。 - 创建 TileSet :在
TileMap的检查器中,为其创建一个新的TileSet资源。这会在底部打开一个专门的TileSet编辑标签页。
2. 导入素材并自动切分瓦片
- 拖入素材 :直接将 Sprout Lands 素材包中的各种图集(如草地
grass.png、山丘hills.png、泥土dirt.png、水water.png、木屋wooden_house.png、栅栏fences.png等)拖拽到TileSet编辑器中。 - 自动切分:Godot 4 会弹出提示询问是否自动创建瓦片,选择"是"。引擎会智能地将整张图集切分成单个可用的瓦片,极大地简化了准备工作。
3. 使用多层(Layers)构建深度
- 问题:有些瓦片(如山丘、房屋)带有透明区域,如果直接画在基础地面上,会显得很奇怪。
- 解决方案 :为
TileMap创建多个图层。- 基础地面层 (base ground):用于绘制不透明的基础地形,如草地。
- 顶层地面层 (top ground):用于绘制带有透明区域的装饰性瓦片,如山丘、路径等,它们会覆盖在基础层之上。
- 高处墙壁层 (high ground walls):用于绘制更高层级的物体,如房屋墙壁、悬崖壁,以营造高低错落的视觉效果。
- Z-index 控制 :通过为不同图层设置不同的
Z Index(例如,将地面层设为-5),确保玩家角色(默认 Z-index 为 0)始终能正确地在地面之上、墙壁之下或之上进行渲染。

4. 为瓦片添加碰撞(Collision)
- 目标:让玩家无法穿过墙壁、悬崖等障碍物。
- 步骤 :
- 创建物理层 :在
TileSet的检查器中,展开Physics Layers并添加一个元素。这会创建一个默认的碰撞层(Layer 1, Mask 1)。 - 进入绘制模式 :在
TileSet编辑器中,点击Paint Properties按钮,并选择刚刚创建的物理层(Physics Layer 0)。 - 绘制碰撞体 :
- 对于简单的方形障碍物(如完整的墙壁瓦片),直接点击瓦片,Godot 会自动生成一个覆盖整个瓦片的矩形碰撞体。
- 对于复杂的瓦片(如带斜坡的悬崖边缘),需要手动编辑碰撞形状。点击瓦片后,可以在编辑器中使用工具(如
Manual Add、Edit Points)精确地绘制出只覆盖不可通行区域的碰撞多边形,确保玩家可以站在悬崖顶部但不能从侧面穿过去。
- 创建物理层 :在

可以使用网格来确保连接的瓦片边缘可以连续
5. 添加随机性和细节
- 随机绘制 :在绘制基础草地时,可以先选中多种变体的草地块,然后使用
Random工具进行绘制,或者使用Fill Bucket(油漆桶)填充后,通过调整Scattering(散射)值来控制变体出现的频率,从而快速创建出自然、不重复的地表。
6. 锁定 TileMap 防止误操作
- 在
GameLevel场景中选中TileMap节点,在检查器中勾选Locked(锁定)。这样可以防止在视图中不小心拖动整个地图,但依然可以正常绘制瓦片。

7. 添加跟随相机(Camera2D)
- 添加相机 :在
GameLevel中添加一个Camera2D节点,并将其设为当前激活的相机(勾选Current)。 - 实现跟随 :为了让相机跟随玩家,需要在玩家 (
Player Cat) 节点下添加一个RemoteTransform2D子节点。将RemoteTransform2D的Remote Path指向场景中的Camera2D节点。这样,相机就会自动跟随玩家的位置移动。
通过以上步骤,教程成功地将一个空旷的场景变成了一个具有视觉层次、物理碰撞和动态视角的、可供玩家探索的完整游戏世界。
