下载 App

开发者日志03:Godot中多房间导航方案的实践

2025/10/2427 浏览
昨天搞定了大地图的生成逻辑,今天开始处理导航的问题。项目是多个小房间拼起来的,需要实现跨房间的自动寻路,主要是给敌人AI用的。
一开始想的是用NavigationRegion2D,因为感觉能更灵活地定义导航区域。折腾了一阵发现几个问题:首先每个房间都得手动画导航多边形,工作量太大了;其次多房间连通虽然理论上可行,但需要保证各个区域的边界对齐,不然就会出现断点。测试的时候发现敌人经常在房间交界处卡住,调了半天参数还是不太稳定。
后来想起来项目本来就是用TileMap做的地图,干脆就试试Godot内置的TileMapLayer导航功能。配置起来简单多了,在TileSet里把能走的tile设置好Navigation Layer就行,不用手动画什么多边形。测试了一下,跨房间寻路直接就通了,NavigationServer2D会自动把所有房间的导航网格合并起来,完全不用担心连接的问题。
动态障碍物也比想象中简单。之前纠结要不要改用NavigationPolygon,后来发现直接用set_cell()就能实现。比如做个门的开关,关闭时把那个格子设成-1删掉tile,打开时重新set回地板tile,导航系统会自动更新。对于移动的障碍物,比如敌人之间的避让,加个NavigationObstacle2D节点就搞定,性能影响也不大。
最后还是决定用TileMap的方案。理由很简单:第一是省事,跟现有的地图系统完全贴合;第二是稳定,Godot对tile导航的支持很成熟,多房间连通完全是自动的;第三是够用,虽然精度受限于格子大小,但对这个项目来说完全足够了。NavigationRegion2D留着以后有特殊需求再说吧[TapTap表情|TapFamilyxdoro2_粉粉举杯]。
顺便封装了个NavigationManager,把路径查询和障碍物管理包了一层,代码干净了不少。现在敌人已经能在整个大地图里追玩家了,效果还不错[心动小镇_点赞]。
明天就完善基本的的战斗系统了, 赛程的最后这几天才开始空出来疯狂追赶进度👻(不要问为啥进度这么低, 问就是工作业余时间参赛~)
猜你想搜
零号梦境 生存 多房间导航方案
开发者日志02: 游戏内地图的生成探索截图
开发者日志02: 游戏内地图的生成探索
对于初期的时候,我们的设想是通过PCG加上有限素材去生成随机无限的大地图, 经过不停的生成算法探索, 加上自定义地块拼接规则的尝试, 最终实现的如封面所示的毫无美感的地图(这一步对于21天挑战来说损耗很大, 特别耽误时间::>_<::) 不断探寻方案后, 发现还是自己制作小块地图+加上随机拼接才能达到可控的效果(图二为自定义区域A), 后续随着版本迭代可以加上更多有趣味性的区域, 下一步就是在此基
官方
3 赞
1 回复
开发者日志#05, 变身系统~截图
开发者日志#05, 变身系统~
怪物会掉落各种变身道具,角色吃到变身道具时,会变成对应的形象,对应不同的攻击方式。(攻击速度,范围,伤害,移动速度等改变,但生命不变) 空间定位优化 利用空间分区算法实现 O(1) 近似的范围查询,支持数千个能量球同时存在。 状态机设计 能量球采用简单状态机(IDLE → ATTRACTED → COLLECTED),玩家进入吸引半径时自动转换状态,实现平滑的吸引和收集体验。 事件驱动架构 通过信
官方
3 赞
1 回复
开发者日志06:总结篇截图
开发者日志06:总结篇
各位关注着《零号梦境:生存》的朋友们,大家好。 我们是 「不知梦小队」—— 一个由两人构成的微型团队。在过去的21天里,我们进行了一场紧张而奇妙的“梦境构筑”实验。今天,实验阶段暂告段落,我们想与大家分享这段从零开始的旅程。 进度汇报:基石已筑,高楼待起 经过三周高强度的开发,我已经成功地将游戏最核心的循环搭建了起来。如果用建筑来比喻,那么地基和主框架已经完工,但内部的精装修和功能房间才刚刚
官方
5 赞
1 回复
开发者日志:《零号梦境:生存》设定篇截图
开发者日志:《零号梦境:生存》设定篇
各位玩家,大家好。 我们是「不知梦」两人小队,今天,想和大家分享一下《零号梦境:生存》的设定。这不仅仅是一个“在怪物潮水中求生”的游戏,它更是一个关于在自身崩溃的梦境里,寻找真相并夺取控制权的故事。 世界设定:当守护者变为清道夫 想象一下,你正在一艘航行了上百年的殖民飞船中冬眠。为了维系心智,飞船AI“守梦人”为你们编织了一个稳定的集体梦境。然而,一场意外让“守梦人”的核心程序发生了逻辑畸变—
官方
8 赞
3 回复
开发者日志04: 武器系统
核心功能 完成了完整的Player-Weapon-Bullet自动攻击系统。包括敌人检测、自动瞄准、子弹发射和命中判定四个主要模块。 技术实现 碰撞层架构[表情_微笑] 采用了标准化的碰撞层配置:Layer 2用于Player,Layer 4用于Enemy检测,Layer 8用于Hitbox判定。通过Area2D的monitoring/monitorable机制实现单向和双向检测。
官方
4 赞
1 回复
01:02
在崩坏的梦境里开“GM指令”是种什么体验?截图
在崩坏的梦境里开“GM指令”是种什么体验?
#发现好游戏 #游戏安利 #聚光灯gamejam全民试玩
6 赞
2 回复