地图编辑部分教程总结

学习视频: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 节点。这样,相机就会自动跟随玩家的位置移动。

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

相关推荐
我的golang之路果然有问题1 天前
unity 资源导入 godot
unity·游戏引擎·godot
故事不长丨2 天前
安卓相机开发:Camera、Camera2与CameraX的使用对比及选型指南
android·相机·camera·camerax·camera2·移动设备·相机开发
习惯就好zz2 天前
Godot Player CharacterBody2D 移动和停止配置
游戏引擎·godot·characterbody2d·animationplayer·animationtree
郝学胜-神的一滴5 天前
深入解析Mipmap层级判定原理:从理论到实践
c++·unity·godot·游戏程序·图形渲染·unreal engine
Mars-xq6 天前
godot 毛玻璃效果着色器shader
游戏引擎·godot·着色器
一个笔记本11 天前
godot log | 修改main scene
游戏引擎·godot
技术小甜甜11 天前
【Godot】【入门】信号系统从 0 到 1(UI/玩法彻底解耦的通用写法)
ui·游戏引擎·godot
Mars-xq11 天前
Android godot 交互数据监听
android·godot·交互
技术小甜甜11 天前
【Godot】【入门】节点生命周期怎么用(避免帧循环乱写导致卡顿的范式)
游戏引擎·godot