地图编辑部分教程总结

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

可以使用网格来确保连接的瓦片边缘可以连续

5. 添加随机性和细节
  • 随机绘制 :在绘制基础草地时,可以先选中多种变体的草地块,然后使用 Random 工具进行绘制,或者使用 Fill Bucket(油漆桶)填充后,通过调整 Scattering(散射)值来控制变体出现的频率,从而快速创建出自然、不重复的地表。
6. 锁定 TileMap 防止误操作
  • GameLevel 场景中选中 TileMap 节点,在检查器中勾选 Locked(锁定)。这样可以防止在视图中不小心拖动整个地图,但依然可以正常绘制瓦片。
7. 添加跟随相机(Camera2D)
  • 添加相机 :在 GameLevel 中添加一个 Camera2D 节点,并将其设为当前激活的相机(勾选 Current)。
  • 实现跟随 :为了让相机跟随玩家,需要在玩家 (Player Cat) 节点下添加一个 RemoteTransform2D 子节点。将 RemoteTransform2DRemote Path 指向场景中的 Camera2D 节点。这样,相机就会自动跟随玩家的位置移动。

通过以上步骤,教程成功地将一个空旷的场景变成了一个具有视觉层次、物理碰撞和动态视角的、可供玩家探索的完整游戏世界。

相关推荐
风酥糖1 天前
Godot游戏练习01-第14节-Theme,字体,游戏UI
游戏·ui·godot
风酥糖2 天前
Godot游戏练习01-第11节-显示优化,游戏背景,Shader
游戏·游戏引擎·godot
风酥糖2 天前
Godot游戏练习01-第9节-游戏轮次
游戏·godot
风酥糖2 天前
Godot游戏练习01-第13节-粒子系统,武器攻击特效
游戏·游戏引擎·godot
风酥糖3 天前
Godot游戏练习01-第10节-组件化,玩家受伤,YSort,和一点思考
游戏·游戏引擎·godot
风酥糖3 天前
Godot游戏练习01-第12节-添加武器动画,同步动画显示
游戏·游戏引擎·godot
相信神话20216 天前
《酒魂》游戏开发实战——从设计思想到 Godot 实现(单机完整版)
游戏引擎·godot
郭逍遥8 天前
[Godot] 沃罗诺伊图生成算法
算法·c#·游戏引擎·godot
郭逍遥23 天前
[Godot] 通过AABB包围盒和射线法检测碰撞
算法·游戏引擎·godot
风痕天际23 天前
Godot扫雷游戏制作记录4——计算周围地雷数并显示
游戏·游戏引擎·godot