地图编辑部分教程总结

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

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

相关推荐
郝学胜-神的一滴12 小时前
中级OpenGL教程 006:高光反射原理与 Shader 实现
c++·unity·godot·图形渲染·three.js·opengl·unreal
相信神话20212 天前
3.5《酒魂》体验与失败设计
游戏引擎·godot·godot4
刘欣的博客3 天前
Godot的Normalized()函数说明
godot·normalized函数说明
风酥糖5 天前
Godot游戏练习01-第34节-开始引入AI开发
人工智能·游戏·godot
郝学胜-神的一滴10 天前
[简化版 GAMES 101] 计算机图形学 08:三角形光栅化上
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
Being0913 天前
GDScript使用静态类型并开启严格的类型检查
godot
郝学胜-神的一滴15 天前
中级OpenGL教程 004:为几何体注入法线灵魂
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
相信神话202118 天前
3.2《酒魂》规则设计文档
游戏引擎·godot·2d游戏编程·godot4·2d游戏开发
风酥糖18 天前
Godot游戏练习01-第33节-新增会爆炸的敌人
游戏·游戏引擎·godot
郝学胜-神的一滴19 天前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal