下载 App

Godot 像素风开放世界游戏|A1 模块拆解

修改于09/215 浏览 疑似 AI 合成内容
引擎版本:Godot 4.8.dev(当前环境)| 渲染器:2D CanvasItem | 地图规模:单张超大 TileMapLayer
horizontal linehorizontal line

模块总览依赖图

P0(地基)                    P1(核心功能)               P2(扩展/打磨)
─────────────────────────────────────────────────────────────────────────────
GameManager (Autoload)
    │
    ├──► WorldMapManager ───► ZoneSystem ──────────────────────────────────► DayNightAtmosphere
    │         │
    │         ├──► CollisionManager
    │         │
    │         └──► CameraController ───────────────────────────────────────► CameraZoom
    │
    ├──► PlayerController
    │         │
    │         └──► InteractionSystem ──► DoorSystem ──► BuildingInteriorSystem ──► MultiLevelSupport
    │                                     │
    │                                     └──► WorldOverviewMap
    │
    └──► UIManager ────────────────────────────────────────────────────────► CustomMarkerSystem
horizontal linehorizontal line

P0 模块(地基,必须最先做)

模块 1:GameManager(全局游戏状态管理)

项目内容
开发目标全局单例 Autoload,管理游戏生命周期、场景加载状态、玩家数据总线
Godot 节点Node(Autoload 注册为 GameManager)
功能要点• 全局信号总线(player_spawned、zone_entered、map_changed)<br>• 游戏状态枚举(MENU / PLAYING / PAUSED / MAP_OPEN)<br>• 玩家坐标持久缓存(供 UI、总览地图查询)<br>• 全局设置(音量、分辨率、控制模式)
依赖项无(最先创建)
horizontal linehorizontal line

模块 2:WorldMapManager(超大世界地图底座)

项目内容
开发目标单张超大连续 TileMap 地图,含六大区域 + 道路 + 远景
Godot 节点Node2D(根节点)<br>├─ TileMapLayer(Ground 地面层,TileSet 含 6 区域 tile)<br>├─ TileMapLayer(Deco 装饰层:草、花、石头)<br>├─ TileMapLayer(Obstacle 阻挡层:山、大树、水域、建筑墙基)<br>├─ TileMapLayer(Road 道路层,绘制区域间连接路)<br>├─ Node2D(远景层:视差滚动山脉云雾)<br>└─ Node2D(ZoneMarkers:6 个区域的 Area2D 触发器)
功能要点• TileSet 制作:统一 16×16 或 32×32 像素网格<br>• 地图尺寸预估:至少 400×300 tile(根据内容量调整)<br>• 六大区域物理划分(Area2D + CollisionShape2D 矩形区域)<br>• 远景山脉用 ParallaxBackground 或纯 ColorRect + Shader 云雾效果<br>• TileMapLayer 的 collision_layer / collision_mask 精确控制阻挡
优先级P0
依赖项GameManager
horizontal linehorizontal line

模块 3:CollisionManager(碰撞与阻挡)

项目内容
开发目标统一管理世界阻挡逻辑,山体/建筑/大树/水域/边界
Godot 节点嵌入 WorldMapManager 中<br>• TileMapLayer(Obstacle 层,启用碰撞)<br>• StaticBody2D(世界边界 4 面墙)<br>• CollisionShape2D(矩形,包围整个地图外缘)
功能要点• Godot 4.x TileMapLayer 自带碰撞通道,直接在 TileSet 里给阻挡 tile 勾 Collision<br>• 水域:单独 TileSet 图层 + CollisionPolygon2D,或用 Area2D 做浅水/深水区分<br>• 世界边界:StaticBody2D 围四边,玩家 CharacterBody2D 撞上去自然停止<br>• 建筑外墙:TileMapLayer 绘制墙体 tile(带碰撞),室内墙独立处理
优先级P0
依赖项WorldMapManager
horizontal linehorizontal line

模块 4:PlayerController(玩家移动与碰撞)

项目内容
开发目标角色在开放世界自由移动,支持键盘 + 点击移动,受碰撞约束
Godot 节点CharacterBody2D<br>├─ Sprite2D(或 AnimatedSprite2D,像素角色 4 向行走动画)<br>├─ CollisionShape2D(CapsuleShape2D 或 RectangleShape2D,脚底对齐)<br>├─ Camera2D(当前模式:position_smoothing_enabled=true)<br>├─ RayCast2D(脚底检测,可拓展地形区分)<br>└─ State(脚本内状态机:Idle / Walk / Run / EnterBuilding)
功能要点• 键盘 WASD / 方向键 → move_and_slide() 四向移动<br>• 点击移动:get_global_mouse_position() + create_navigation_agent() 或简单 _unhandled_input 中设置目标点 + Tween 匀速行进(有碰撞检查则停下)<br>• 相机跟随:Camera2D 直接挂在 Player 下,当前够用;P2 再拆成独立 CameraController<br>• 朝向判定:根据移动方向 flip Sprite2D(水平方向)+ 切换 4 向动画帧<br>• 碰撞层设置:Player collision_layer=1, 与 Obstacle 层 mask 对齐
优先级P0
依赖项CollisionManager
horizontal linehorizontal line

P1 模块(核心玩法,依赖 P0 地基)

模块 5:CameraController(独立相机系统)

项目内容
开发目标从 Player 节点剥离,支持跟随 + 边界限制 + 过渡动画
Godot 节点Camera2D(独立 Node,不挂 Player 下)
功能要点• make_current() 激活<br>• position_smoothing_enabled = true,smooth_amount 0.05~0.1<br>• limit_left/right/top/bottom 绑定地图边界,防止看空<br>• 跟随 Player:_process 中 global_position = player.global_position + 偏移<br>• 建筑内切换:进入室内后 limit 收缩到建筑范围,淡出淡入过渡<br>• zoom 属性预留给 P2 总览/缩放功能
优先级P1
依赖项PlayerController、WorldMapManager
horizontal linehorizontal line

模块 6:InteractionSystem(通用交互框架)

项目内容
开发目标统一的"靠近 → 交互提示 → 按键触发"模式,门、NPC、工作台共用
Godot 节点纯脚本框架(无需独立场景),PlayerController 内嵌入<br>• Area2D(Player 脚下交互检测区域)<br>• CollisionShape2D(圆形,半径 48~64 px)
功能要点• Player 身上的 Area2D 监控 body_entered / body_exited<br>• 可交互物体统一实现 IInteractable 接口(interact() 方法 + prompt_text 属性)<br>• 最近交互对象高亮 + UI 弹出提示("按 E 进入")<br>• Input.is_action_just_pressed("interact") 触发
优先级P1
依赖项PlayerController
horizontal linehorizontal line

模块 7:DoorSystem(建筑门交互)

项目内容
开发目标建筑入口门,靠近显示"进入"提示,按键进入室内
Godot 节点每个门一个实例<br>StaticBody2D(门框阻挡)<br>├─ Sprite2D(门贴图)<br>├─ CollisionShape2D(阻挡玩家进入门内)<br>└─ 挂载 IInteractable 脚本 + Area2D(可选,精细触发)
功能要点• 正常状态:门作为 StaticBody2D 阻挡玩家穿过<br>• 交互触发:interact() 发出信号 door_entered,携带 building_id<br>• 进出方向:记录进入方向,退出时面朝正确方向<br>• 门的视觉状态:关闭 / 打开(Sprite2D 切换)
优先级P1
依赖项InteractionSystem
horizontal linehorizontal line

模块 8:BuildingInteriorSystem(无缝室内系统)

项目内容
开发目标玩家进入建筑不切场景,墙体自动半透明/隐藏,家具可交互
Godot 节点Node2D(BuildingRoot,每栋建筑一个实例)<br>├─ TileMapLayer(建筑内墙层)<br>├─ TileMapLayer(建筑内墙 Collision 层)<br>├─ TileMapLayer(家具装饰层)<br>├─ Area2D(建筑范围触发器)<br>├─ DoorSystem[](所有门实例)<br>└─ Workbench[](家具交互物,工作台等)
功能要点• 不切场景核心:室内外 TileMapLayer 在同一 Node2D 树下,切换时仅改 TileMapLayer 的 modulate.a 和 Collision 是否启用<br>• 墙体遮挡逻辑:<br>  - 在 BuildingRoot 上挂一个 ShaderMaterial,实时检测 Camera2D 中心是否在建筑 Area2D 内<br>  - 若 Camera 在室外、Player 也在室外 → 内墙层 modulate.a = 1.0(正常显示)<br>  - 若 Player 在建筑 Area2D 内 → 内墙层 + 外墙 TileMapLayer modulate.a = 0.3~0.5 半透明,玩家能看到内部<br>  - 彻底隐藏墙体也可:内墙层 visible = false<br>• 家具:StaticBody2D(阻挡)+ Sprite2D + IInteractable(工作台打开 UI 等)<br>• 多层建筑:P2 模块,P1 先做单层<br>• 建筑边界碰撞:建筑外墙 TileMapLayer 带碰撞,内墙独立控制
优先级P1
依赖项DoorSystem、CameraController、WorldMapManager
horizontal linehorizontal line

模块 9:ZoneSystem(区域识别系统)

项目内容
开发目标玩家进入不同区域时弹出区域名称提示(森林、农场、村庄、河流、工坊、城堡山谷)
Godot 节点嵌入 WorldMapManager<br>• Area2D(6 个区域各一个,覆盖区域范围)<br>  └─ RectangleShape2D<br>  └─ 区域元数据脚本(zone_name、zone_color、zone_icon)
功能要点• Area2D body_entered 检测 Player → 触发 zone_entered 信号<br>• 防重入:记录 current_zone_id,同一区域内反复进入不重复弹<br>• 区域边界模糊区:Area2D 之间可有 1~2 tile 重叠,信号触发时优先最具体区域<br>• 弹出 UI:UIManager 接管,底部或顶部淡入
优先级P1
依赖项WorldMapManager、PlayerController、UIManager
horizontal linehorizontal line

模块 10:WorldOverviewMap(总览地图系统)

项目内容
开发目标玩家随时按 M 打开世界总览,显示整张地图缩略图 + 玩家位置 + 重要地点标记 + 拖拽缩放
Godot 节点CanvasLayer(Overlay,最顶层)<br>├─ Control(全屏半透明背景遮罩)<br>├─ SubViewport / TextureRect(地图缩略图渲染)<br>├─ Camera2D(专门用于渲染总览世界的正交相机,挂在独立 WorldOverview 场景上)<br>├─ Node2D(MarkersContainer)<br>│  ├─ Sprite2D(Player 当前位置标记,红色箭头)<br>│  ├─ Sprite2D[](重要地点标记:城堡、工坊、桥梁等)<br>│  └─ Sprite2D[](自定义目标点标记)<br>└─ Control(UI 层:缩放按钮、关闭按钮)
功能要点• 总览渲染方案:创建独立 WorldOverview.tscn,内容是同一张 WorldMapManager 的 TileMapLayer,但用一个超大 Camera2D 从正上方完整拍摄 → 渲染到 SubViewport → TextureRect 显示<br>• 拖动平移:InputEventMouseButton(右键按住)偏移总览相机位置,不影响主游戏<br>• 缩放:InputEventMouseWheel 改总览 Camera2D 的 zoom<br>• 玩家位置实时标记:每帧把 Player 的 global_position 转换为总览坐标更新箭头 Sprite2D<br>• 重要地点标记:ZoneSystem 触发时记录坐标,总览上绘制固定图标<br>• 开关:Input.is_action_just_pressed("toggle_map") → 切换 CanvasLayer.visible<br>• 开关时暂停 / 恢复:GameManager.state = PAUSED / PLAYING
优先级P1
依赖项GameManager、WorldMapManager、ZoneSystem、PlayerController
horizontal linehorizontal line

模块 11:UIManager(UI 管理中枢)

项目内容
开发目标统一管理所有游戏 UI:按钮、弹出提示、交互提示、区域名称
Godot 节点CanvasLayer(独立 UI 层,总 index 设高)<br>├─ Control(HUD 根节点,全屏锚点)<br>│  ├─ Button(总览地图开关按钮)<br>│  ├─ Label(坐标显示,可选)<br>│  └─ PanelContainer(交互提示容器,靠近门时显示"按 E 进入")<br>├─ Control(ZoneBanner,底部弹出区域名)<br>└─ Control(MapCanvasLayer,WorldOverviewMap 的父层)
功能要点• 交互提示:订阅 InteractionSystem 的信号,动态更新 PanelContainer 文字 + 显示/隐藏<br>• 区域名称弹窗:订阅 ZoneSystem 的 zone_entered,Label 淡入显示 2~3 秒后淡出<br>• 总览开关按钮:绑定 WorldOverviewMap 的 visible 切换<br>• 全部 UI 使用 Godot Theme 统一像素风风格
优先级P1
依赖项GameManager、InteractionSystem、ZoneSystem、WorldOverviewMap
horizontal linehorizontal line

P2 模块(扩展 / 打磨)

模块 12:MultiLevelBuilding(多层建筑支持)

项目内容
开发目标建筑内楼梯上下层切换,每层独立 TileMapLayer
Godot 节点BuildingRoot 下增加<br>• TileMapLayer[](每层一套内墙 + 家具层)<br>• Area2D[](楼梯触发器)<br>• Camera2D(每层独立 limit,切层时过渡动画)
功能要点• 楼梯 Area2D 触发切层 → 切换当前层 TileMapLayer 的 visible<br>• Camera2D limit 平滑过渡到新层范围
优先级P2
依赖项BuildingInteriorSystem、CameraController
horizontal linehorizontal line

模块 13:CustomMarkerSystem(玩家自定义目标标记)

项目内容
开发目标玩家在总览地图上右键点击放置自定义目标点,地图上显示标记
Godot 节点嵌入 WorldOverviewMap<br>• Node2D(CustomMarkers 容器)<br>• Sprite2D + Label(每个标记实例)
功能要点• 总览地图上右键 → 记录坐标 → 生成标记 Sprite2D + 可编辑 Label<br>• 数据存 GameManager.custom_markers 数组
优先级P2
依赖项WorldOverviewMap、GameManager
horizontal linehorizontal line

模块 14:DayNightAtmosphere(昼夜与氛围)

项目内容
开发目标远景山脉云雾 + 昼夜色调渐变 + 区域氛围微调
Godot 节点嵌入 WorldMapManager<br>• ParallaxBackground(远景山脉 + 云雾层)<br>• ColorRect(全屏昼夜色调遮罩,挂 Camera2D 下的 CanvasLayer)<br>• Shader(云雾动画)
功能要点• ParallaxBackground 多层不同 scroll_base_offset 产生深度感<br>• ColorRect modulate 根据游戏时间 Tween 颜色(白天偏蓝、黄昏偏橙、夜晚偏紫)
优先级P2
依赖项WorldMapManager、CameraController
horizontal linehorizontal line

模块 15:WorldBoundaryIndicator(世界边界视觉提示)

项目内容
开发目标玩家靠近地图边缘时视觉提示,防止"卡墙"体验差
Godot 节点嵌入 WorldMapManager 的 CollisionManager
功能要点• 边界 CollisionShape2D 同时作为 Area2D,Player 靠近时触发<br>• UI 弹出提示 + 轻微屏幕边缘颜色加深
优先级P2
依赖项CollisionManager、PlayerController、UIManager
horizontal linehorizontal line

开发阶段建议

Week 1 (P0 全部)
  └─ GameManager → WorldMapManager → CollisionManager → PlayerController
     (先画一张空白地图 + 玩家能动 + 撞墙停下 = 可玩 Demo)

Week 2 (P1 核心)
  └─ CameraController → InteractionSystem → DoorSystem → BuildingInteriorSystem
     ZoneSystem → UIManager
     (玩家能进门、区域弹名、交互提示齐全 = 完整交互 Demo)

Week 3 (P1 最后 + P2 开始)
  └─ WorldOverviewMap(总览地图)
     MultiLevel → CustomMarker → Atmosphere → BoundaryIndicator
关键节点选型总结:
场景推荐节点替代/备注
超大地图地面TileMapLayerGodot 4.x 新 API,比旧 TileMap2D 更灵活
玩家角色CharacterBody2D2D 游戏标准选择,自带 move_and_slide
相机跟随Camera2DPlayerController 内嵌或独立 CameraController
交互检测Area2D挂 Player 身上,检测周围 IInteractable
建筑门StaticBody2D平时阻挡,交互时可开门动画
墙体半透明modulate.a + ShaderMaterial比切换 visible 更平滑
总览地图SubViewport + Camera2D独立渲染通路,不影响主游戏
远景ParallaxBackground多层视差产生深度感
截图
官方
v.9.36更新内容截图
v.9.36更新内容
BOSS全面升级:新增第三重特技「锁定狙击」,特级轮换三招;湮灭炮/湮灭环/祖击释放前全屏红闪+倒计时强预警 ,告别没反应就被秒·新增QTE能量节点:BOSS大招倒计时内连点5个闪烁节点即可打断施法,成功获熟练度+数据币+额外掉落(鼠标/触 控点按)
官方
3 赞
《伊堺旅人》v0.9.2 体验优化更新截图
《伊堺旅人》v0.9.2 体验优化更新
「小队远征」上线后,我们根据大家的反馈连续打磨了几轮,本次一并优化: 战场技能改版 — 底部技能栏升级为左侧悬浮技能坞,5 个头像对应小队 5 名成员。CD 转满头像亮起,点头像即可释放大招,无需再先选中单位,操作更顺手。 编队入口简化 — 在神城悬停当前阵容头像,直接出现「编辑队伍」,一步进入编队。 对阵站位优化 — 战场改为我方/敌方左右对阵,近战拉开合理间隙,不再贴脸,冲阵更有战场感。 顶栏
官方
1 赞
01:24
9.6高分解谜!63个关卡,能把你的CPU烧到冒烟!截图
9.6高分解谜!63个关卡,能把你的CPU烧到冒烟!
看似简单,实则烧脑,上手才发现脑子不够用了[表情_捂脸哭][表情_捂脸哭][表情_捂脸哭] #益智游戏 #烧脑游戏 #休闲游戏 #游戏推荐
8 赞
CODM× 崩坏3 三大律者立绘放出,9月11日开启命运征途截图
CODM× 崩坏3 三大律者立绘放出,9月11日开启命运征途
谁也没想到的跨界合作来了!《使命召唤手游》和《崩坏3》的联动立绘正式放出,主题定为命运征途,“纵使命运为敌,誓为美好而战” 这句经典台词一出,瞬间戳中无数老舰长,社区直接炸开锅。 这次一共上线三套联动角色皮肤,吉田凛化身雷之律者、海灵化身薪炎之律者、霄羽化身理之律者,三套都是崩坏3人气天花板的律者造型,整套联动内容会在9月11日陆续实装到游戏当中。 不少双坑玩家看到消息直呼见证历史,米哈游和腾讯旗
42 赞
18 回复
01:08
🎵米加音乐节来了!从舞台到后台,体验追星人的快乐!截图
🎵米加音乐节来了!从舞台到后台,体验追星人的快乐!
#休闲游戏 #游戏安利 #游戏推荐 #游戏讨论 #米加小镇世界 #米加 #米加小镇 #米加更新
15 赞
12 回复
01:02
一口一个吞噬小行星,喂饱黑洞❗截图
一口一个吞噬小行星,喂饱黑洞❗
#发现好游戏 #浅评一下 #游戏安利 #游戏推荐 #休闲游戏
1 赞
3 回复
01:05
不用联网!手机也能体验地平线式公路竞速!截图
不用联网!手机也能体验地平线式公路竞速!
#发现好游戏 #游戏安利 #游戏日常
11 赞
4 回复
01:42
❗️《伊莫》热乎上线🕹️生态细节拉满🥹不仅能进化还能宠物穿搭💗截图
❗️《伊莫》热乎上线🕹️生态细节拉满🥹不仅能进化还能宠物穿搭💗
1 赞
01:03
不拜山头、偷学百家、自创武学、钓鱼挖矿!真武侠来了!截图
不拜山头、偷学百家、自创武学、钓鱼挖矿!真武侠来了!
#休闲游戏 #武侠游戏 #武侠 #角色扮演 #江湖夜雨十年灯 #发现好游戏
7 赞
2 回复