 joywayerandClaude Opus 5
|
e59e24cca0
|
docs(enemy): 修正 AI 配方解析方式——直接引用替代注册表双源
实施计划阶段发现两处硬阻塞:
1. BaseGames.AI 只引用 BaseGames.Core,无法收集依赖 Enemies 的 AiRecipeSO;
2. 项目 database SO 走 [SerializeField] 直接引用而非 Addressables,静态注册表取不到。
改为 EnemyAiBrain 上 _recipe 资产引用 / _definitionId 脚本 id 二选一。
净减 AiRecipeDatabaseSO、Addressables 加载、AddressKeys 改动、asmdef 改动;
flyweight 与配方路径零字符串 id 均保持。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-29 10:38:07 +08:00 |
|
 joywayerandClaude Opus 5
|
1c32d8c87e
|
docs(enemy): 敌人 AI 组合式模块架构设计(替换 PerceptionStateMachine)
四层架构:固定感知骨架 + 可插拔的 未发现层/交战层/死亡层;
两种定义源:PerceptionRecipeSO 配方资产(约 95% 敌人零代码)+ AiScript 定制脚本;
消除 Config 开关面板(EngagementStyle/PatrolBetweenChases → RushExit 语义枚举);
能力引用资产化(AbilityRef);AiSignal 8→1 清理死枚举。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-29 10:20:22 +08:00 |
|
joywayer
|
c4e80afe9e
|
chore(enemy): 清除随寻路库失效的 NavDriving 死代码与两处过时注释
NavDriving 原由已删除的寻路适配层设置,现无人写入(全项目 C# 零引用),
连同其调试字段一并移除;场景/预制体里的序列化残值由 Unity 下次保存自动丢弃。
|
2026-07-28 13:28:52 +08:00 |
|
 joywayerandClaude Opus 5
|
d46ba67385
|
merge: 移除第三方 2D 寻路库,敌人导航改为直接移动方案
核心洞察:可达性由 EnemyMovement 的墙/悬崖夹紧天然表达——走过去、被夹停就是边界,
无需重建任何图/段结构。'agent 脱离导航段导致寻路全面静默失效'这一整类问题随之消失。
- IPathAgent(20+成员) → IEnemyNavigator(7成员);GroundNavigator/FlyingNavigator/NullEnemyNavigator
- 三处重复的卡死检测收敛为 StallDetector;修复 Pace 持续受阻无法掉头的死锁
- 修复 Wander 挑点失败退化为永久播 Idle 的缺陷
- 删除寻路库整包(112脚本/21069行)及对其源码的 4 处项目改动
- 脚手架/编辑器面板/Boss 预制体同步清理
净变化:删约 21500 行,加约 350 行。
验证:编译 0 错误;EditMode 206/206;PlayMode 无寻路库环境下三种巡逻+追击实测通过。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-28 13:20:05 +08:00 |
|
joywayer
|
a220b5c0d8
|
删除多余
|
2026-07-28 13:18:41 +08:00 |
|
joywayer
|
02ea0bb576
|
docs(enemy): 标注脱图脱困设计已作废(被移除寻路库方案取代,未实施)
|
2026-07-28 13:03:54 +08:00 |
|
joywayer
|
878e2c12cc
|
chore(enemy): Boss 预制体移除随寻路库失效的 3 个导航组件(Boss 本就不使用导航)
|
2026-07-28 13:02:52 +08:00 |
|
joywayer
|
7934513b05
|
chore: 删除第三方 2D 寻路库整包(112 脚本/21069 行,含 4 处对其源码的项目改动)
敌人导航已改为 GroundNavigator/FlyingNavigator 直接移动方案:
可达性由 EnemyMovement 的墙/悬崖夹紧天然决定,不再需要烘焙导航图,
'agent 脱离导航段导致寻路全面静默失效'这一整类问题随之消失。
|
2026-07-28 11:50:33 +08:00 |
|
joywayer
|
3c622a69f2
|
refactor(enemy): NavLinkType 迁入 INavLinkHandler 并改述为能力驱动的地形穿越;补交新脚本 .meta
|
2026-07-28 11:50:17 +08:00 |
|
joywayer
|
4455062ee9
|
refactor(editor): 脚手架改用 GroundNavigator,移除寻路库引用与导航面放置工具
|
2026-07-28 11:45:24 +08:00 |
|
joywayer
|
219fe46719
|
fix(enemy): GroundNavigator 停止改为直写移动输入,消除与 EnemyBase.StopMovement 的无限递归(栈溢出)
|
2026-07-28 11:39:25 +08:00 |
|
joywayer
|
de3c9deff4
|
refactor(enemy): 消费者切换到 IEnemyNavigator(Wander/Waypoints 去导航图化,调试面板简化)
|
2026-07-28 11:25:21 +08:00 |
|
joywayer
|
49627d357d
|
refactor(enemy): FlyingDirectNavigator 改名 FlyingNavigator 并切换到 IEnemyNavigator
|
2026-07-28 11:17:34 +08:00 |
|
joywayer
|
c041712e99
|
fix(test): 到达边界用例改用二进制可精确表示的值(1.25/0.25),避免浮点噪声误判
|
2026-07-28 11:15:16 +08:00 |
|
joywayer
|
668bc3500e
|
feat(enemy): 新增 GroundNavigator 地面直接移动导航(+7 纯函数单测)
补充 EditMode 测试程序集对 BaseGames.Enemies.Navigation 的引用(此前缺失,新测试无法编译)
|
2026-07-28 11:12:11 +08:00 |
|
joywayer
|
2174e42ce0
|
feat(enemy): 新增 IEnemyNavigator 瘦身导航接口(7 成员)与 NullEnemyNavigator
|
2026-07-28 11:07:53 +08:00 |
|
joywayer
|
8ea919a7f1
|
chore(enemy): 补交 StallDetector 与其测试的 .meta
|
2026-07-28 11:07:06 +08:00 |
|
joywayer
|
c929b5efb7
|
refactor(enemy): 三处卡死检测收敛为 StallDetector;修复 Pace 持续受阻时无法掉头的死锁
|
2026-07-28 11:04:18 +08:00 |
|
joywayer
|
5cfacf199a
|
feat(enemy): 新增 StallDetector 推进停滞检测(+8 单测),为收敛三处重复实现做准备
|
2026-07-28 11:01:01 +08:00 |
|
joywayer
|
d9ec0a4f6e
|
docs(enemy): 移除寻路库实现计划(10任务/6阶段,TDD+编译门+回归门+PlayMode验收)
|
2026-07-28 10:53:21 +08:00 |
|
joywayer
|
d74a2b6646
|
docs(enemy): 移除寻路库后的敌人导航框架设计(IEnemyNavigator 瘦身+地面直移+StallDetector 收敛)
|
2026-07-28 10:41:30 +08:00 |
|
joywayer
|
579499e678
|
docs(enemy): 脱困改用敌人自身步速(MoveHorizontal/WalkSpeed),移除独立速度参数
|
2026-07-27 16:45:00 +08:00 |
|
joywayer
|
e7f1633877
|
docs(enemy): 导航脱图统一脱困设计(含 Wander/Waypoints 静默吞失败与 Pace 边沿翻向两个根因)
|
2026-07-27 16:31:32 +08:00 |
|
joywayer
|
28cd335f40
|
chore(enemy): [临时调试] E001 出生即巡逻,用于真机验证中心悬空导致导航失效的问题
代码处已留 [临时调试] 标记,验证结束后改回 Entry=Idle_Disguise。
|
2026-07-27 16:01:03 +08:00 |
|
joywayer
|
47c2ce7e99
|
fix(enemy): 冲锋禁止以中心悬空姿态收尾(会导致导航映射失败/巡逻失效)
新增 EnemyMovement.IsCenterOverGround() 与 RushAbility.SettleRoutine:
冲锋结束时若着地却中心悬在崖外,继续朝原方向推进直到离地(自由落体)或中心重回地面上方;
有时限,超时仍未脱离则告警暴露地形问题(崖沿有墙),不静默留下坏站位。
|
2026-07-27 15:50:01 +08:00 |
|
joywayer
|
80c0e5c277
|
revert(enemy): E001 初始态改回 Idle_Disguise(伪装静止),移除临时调试改动
|
2026-07-27 15:27:15 +08:00 |
|
joywayer
|
e2645b6212
|
fix(editor): 脚手架提示改为 BrainGraph 指引,清除已废弃的 BehaviorTree/BossSkillSequencer 说法
|
2026-07-27 15:09:47 +08:00 |
|
 joywayerandClaude Opus 5
|
bcc4292076
|
merge: 冲锋能力(RushAbility) — 锁定终点+可冲下悬崖
ContactChaseAbility → RushAbility(文件与类改名,GUID 保留,引用不断):
- 起手动画前锁定玩家 X 与方向(committed 冲锋,可被躲)
- 终点=身体整体越过锁定点(EnemyBase.Body.HasPassed),宽度取自身体几何权威
- 终止:越过锁定点/撞墙(只判墙)/maxDashDuration 超时/净位移卡死
- 冲锋期间经 EnemyMoveInput.AllowLedgeCross 放开悬崖夹紧,可冲下崖不悬停边缘
- 脚手架(SceneObjectPlacerTool/CharacterWizardWindow)同步更新
验证: 编译 0 错误; EditMode 191/191; PlayMode 实测越过锁定点/撞墙终止/
崖边夹紧对比(false=0,true=9)/端到端冲下悬崖并落地。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-27 13:45:13 +08:00 |
|
joywayer
|
4808077fc6
|
feat(enemy): ContactChaseAbility 改造为 RushAbility(冲锋)
- 起手前锁定玩家 X 与方向(committed),终点改为身体整体越过锁定点(Body.HasPassed)
- 终止条件:越过锁定点/撞墙(只判墙)/最大冲刺时长(SO 新增 maxDashDuration)/净位移卡死
- 冲锋期间经 EnemyMoveInput.AllowLedgeCross 放开悬崖夹紧,可冲下崖不悬停边缘
- 类与文件重命名(GUID 保留),脚手架与向导同步更新
|
2026-07-27 13:38:05 +08:00 |
|
joywayer
|
7cba58919f
|
feat(editor): 敌人/Boss 放置脚手架绑定 EnemyBase._bodyCollider(身体几何唯一权威)
|
2026-07-27 13:17:38 +08:00 |
|
 joywayerandClaude Opus 5
|
33a52c4531
|
merge: 角色身体碰撞体唯一权威源(IEnemyBody)
EnemyBase 持有 _bodyCollider 并暴露 Body;EnemyMovement 5 处探测与 EdgeSafeMargin
改走权威,删除重复 4 次的碰撞体解析与 GroundColliderOrSelf;
行为等价(两个敌人原本即回落到根碰撞体),EditMode 191/191 + PlayMode 崖边夹紧验证通过。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-27 12:13:10 +08:00 |
|
joywayer
|
9f8d4f21ca
|
fix(enemy): EnemyMovement 加 RequireComponent(EnemyBase),固化身体权威同物体不变量
|
2026-07-27 12:13:10 +08:00 |
|
joywayer
|
b1d3c169ec
|
chore(enemy): 补交 EnemyBody 与其测试的 .meta
|
2026-07-27 12:07:46 +08:00 |
|
joywayer
|
9a61d3e256
|
refactor(enemy): 移动层探测与 EdgeSafeMargin 改走 Body 权威,删除重复的碰撞体解析
|
2026-07-27 11:55:55 +08:00 |
|
joywayer
|
6026911532
|
feat(enemy): EnemyBase 持有身体几何权威(_bodyCollider + Body),Awake/OnValidate 双重校验
|
2026-07-27 11:51:45 +08:00 |
|
joywayer
|
b0e1ebfecc
|
feat(enemy): 新增 IEnemyBody 身体几何权威接口与 EnemyBody 实现(+14 纯函数单测)
|
2026-07-27 11:48:26 +08:00 |
|
joywayer
|
8a6450910e
|
docs(enemy): 身体几何权威源实现计划(4任务,TDD+编译门+191测试门+PlayMode等价性验证)
|
2026-07-27 11:38:34 +08:00 |
|
joywayer
|
3752a9a0e0
|
docs(enemy): 角色身体碰撞体唯一权威源(IEnemyBody)设计
|
2026-07-27 11:20:09 +08:00 |
|
 joywayerandClaude Opus 5
|
d26872aa6a
|
merge: 抽取 WeightedPick 加权随机共享原语(消除四处平行实现)
小怪选招/Boss 选招/战利品掉落统一到 BaseGames.Core.WeightedPick;
删除零调用的 SelectWeightedSkill 死代码,修 LootResolver 权重重复计算;
冷却与 HitBox 时序经评估否决抽取(理由见决策记录)。
EditMode 177/177 通过。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-27 10:01:14 +08:00 |
|
joywayer
|
86e3637d8e
|
chore(core): 补交 WeightedPick 与其测试的 .meta
|
2026-07-27 10:00:59 +08:00 |
|
joywayer
|
cd9acfcde1
|
docs: 共享底座抽取决策记录(WeightedPick 已抽;冷却/HitBox 窗口否决理由;Boss BrainGraph 路线)
|
2026-07-27 10:00:05 +08:00 |
|
joywayer
|
1d5214beea
|
refactor(enemy): Boss 选招与战利品掉落改用 WeightedPick;删除零调用的 SelectWeightedSkill 死代码
|
2026-07-27 09:58:40 +08:00 |
|
joywayer
|
67220b4bbd
|
refactor(enemy): 小怪选招改用 WeightedPick 共享原语(权重缓冲复用,零 GC)
|
2026-07-27 09:55:59 +08:00 |
|
joywayer
|
3d85f65965
|
feat(core): 新增 WeightedPick 加权随机共享原语(+10 单测),为消除四处平行实现做准备
|
2026-07-27 09:54:34 +08:00 |
|
 joywayerandClaude Opus 4.8
|
c3ab961d3b
|
merge: 敌人寻路逼近+攻击选择器(ApproachAttack 交战范式)
寻路逼近(Approach)↔选招攻击(Attack)两态子机,与冲锋(ChaseAbility)并列;
招式自管圆形射程;WeightedRandom/Priority 两选招模式;
EditMode 167/167 + PlayMode 冒烟验证通过。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-24 15:12:42 +08:00 |
|
joywayer
|
23de5adf75
|
fix(enemy): MeleeAttackAbility 空 clip 走 fallbackDuration(判 clip.Clip 而非 clip),兑现 EnemyAttackSO 契约
|
2026-07-24 15:12:41 +08:00 |
|
joywayer
|
568b6e46c0
|
chore(enemy): 补交新脚本的 .meta(AbilityCategory/AttackSelectionMode/IAttackCandidate/EnemyAttackSelector+测试)
|
2026-07-24 14:55:17 +08:00 |
|
joywayer
|
022e4f18d2
|
fix(enemy): Approach 逼近改用 aggro/视野双刷新的 LastKnown(修 aggro 先命中扑向错误点)+补 Attack 退出测试
|
2026-07-24 12:47:48 +08:00 |
|
joywayer
|
f77ab71555
|
feat(enemy): 攻击能力射程 Gizmo(选中可见)+ category==Attack 的 rangeRadius 自检
|
2026-07-24 12:33:16 +08:00 |
|
joywayer
|
980fe35ae4
|
docs(enemy): PerceptionStateMachine 类注释补充 ApproachAttack 交战风格
|
2026-07-24 12:31:31 +08:00 |
|