docs(enemy): 记录 Task 15 实测结论——含一个项目级严重 bug
后续任务新增最高优先级项:EnemyHurtState.Enter 在无受击动画时提前返回 且不安排回 Controlled,敌人被打一次即永久卡在 Hurt 态、AI 永久停摆。 美术未接入的当下等于大部分敌人一挨打就废。与 Boss 轨无关,需单独立项。 Task 16 加警示:不得删掉 Task 15 新增的 BossBase.Start()——它是场景直接 放置的 Boss 唯一一次应用阶段招池的时机(EnterPhase 只在换阶段触发、 OnSpawn 只在池化复用触发,开局都不跑)。 顺带更正计划头部的 Unity 版本(实际 2022.3.62f3c1,非 Unity 6)。
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
**Architecture:** 决策归 AI 图(每 Boss 一个 `AiScript` 定制类),编排归动画时间轴(clip + 归一化时机 + 动画事件),"能不能用"归招式自己(`CanUse` + 组件启用),"选哪个"归 `EnemyAttackSelector`,演出归旁挂组件。Boss 专属仅一个 `IBossControl` facet(阶段)+ 几个旁挂 MonoBehaviour。
|
**Architecture:** 决策归 AI 图(每 Boss 一个 `AiScript` 定制类),编排归动画时间轴(clip + 归一化时机 + 动画事件),"能不能用"归招式自己(`CanUse` + 组件启用),"选哪个"归 `EnemyAttackSelector`,演出归旁挂组件。Boss 专属仅一个 `IBossControl` facet(阶段)+ 几个旁挂 MonoBehaviour。
|
||||||
|
|
||||||
**Tech Stack:** Unity 6 / C# 9、Animancer、UI Toolkit(编辑器)、NUnit(EditMode 测试)、自研 `BrainGraph`(`BrainBuilder` / `AiRuntime` / `AiGraph`)
|
**Tech Stack:** Unity 2022.3.62f3c1 / C# 9、Animancer、UI Toolkit(编辑器)、NUnit(EditMode 测试)、自研 `BrainGraph`(`BrainBuilder` / `AiRuntime` / `AiGraph`)
|
||||||
|
|
||||||
**Spec:** `Docs_Dev/superpowers/specs/2026-07-30-boss-ai-single-track-design.md`
|
**Spec:** `Docs_Dev/superpowers/specs/2026-07-30-boss-ai-single-track-design.md`
|
||||||
|
|
||||||
@@ -2524,6 +2524,11 @@ TestRoomA 加开战触发区。三件自检 0 error。
|
|||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `Assets/_Game/Scripts/Enemies/Boss/BossBase.cs`
|
- Modify: `Assets/_Game/Scripts/Enemies/Boss/BossBase.cs`
|
||||||
|
|
||||||
|
> ⚠️ **不要删掉 Task 15 新加的 `BossBase.Start()`。** 它调 `_phaseGate?.ApplyPhase(_currentPhase)`,
|
||||||
|
> 是场景直接放置的 Boss(非对象池生成)唯一一次应用阶段招池的时机——
|
||||||
|
> `EnterPhase` 只在换阶段时触发、`OnSpawn` 只在池化复用时触发,两者开局都不会跑。
|
||||||
|
> 缺了它,阶段 1 的招在阶段 0 就是启用状态。Task 15 实测确认过这一点。
|
||||||
|
|
||||||
- [ ] **Step 1: 删技能执行相关成员**
|
- [ ] **Step 1: 删技能执行相关成员**
|
||||||
|
|
||||||
`Assets/_Game/Scripts/Enemies/Boss/BossBase.cs` 删除以下全部内容:
|
`Assets/_Game/Scripts/Enemies/Boss/BossBase.cs` 删除以下全部内容:
|
||||||
@@ -2975,4 +2980,5 @@ EnemyAbilityModule(能力资产编辑器总览)。"
|
|||||||
| `BossEncounterCoordinator` | 多体 Boss 交替出招令牌。等真设计双体 Boss 时再做。见 spec §7.2 |
|
| `BossEncounterCoordinator` | 多体 Boss 交替出招令牌。等真设计双体 Boss 时再做。见 spec §7.2 |
|
||||||
| 嘲风动画 Clip 接入 | 美术资源缺口。Clip 到位后校招式判定时序与预警节奏 |
|
| 嘲风动画 Clip 接入 | 美术资源缺口。Clip 到位后校招式判定时序与预警节奏 |
|
||||||
| `BrainBuilder.Build()` 校验"态是否有出边" | Task 9+10 执行时发现:`Build()` 只校验"边指向的态是否已声明"(`RequireState` 的正向),**不校验反向**——一个已声明却没有任何出边的非终态会让敌人永久卡住且零报错。`BossFragments.PhaseTransition` 按设计不自带出边,正是这类风险点。做法是给 `AiStateFragments.Terminal` 加显式终态标记,`Build()` 对"非终态且无出边"抛异常 |
|
| `BrainBuilder.Build()` 校验"态是否有出边" | Task 9+10 执行时发现:`Build()` 只校验"边指向的态是否已声明"(`RequireState` 的正向),**不校验反向**——一个已声明却没有任何出边的非终态会让敌人永久卡住且零报错。`BossFragments.PhaseTransition` 按设计不自带出边,正是这类风险点。做法是给 `AiStateFragments.Terminal` 加显式终态标记,`Build()` 对"非终态且无出边"抛异常 |
|
||||||
|
| **`EnemyHurtState` 无受击动画时永久卡死(优先级最高)** | Task 15 实测发现:`EnemyHurtState.Enter` 在 `AnimConfig.Hurt` 为空时**提前返回且不安排回到 `Controlled`**。任何没有受击动画的敌人被打一次就永久停在 `Hurt` 态,`IsControllable` 恒假、AI 永久停摆。当前美术未接入,等于**大部分敌人一挨打就废**。典型的规则 6 静默提前返回。与 Boss 轨无关,影响全体敌人,应尽快单独立项 |
|
||||||
| `MoveToAnchor` 只在 `OnEnter` 采样锚点 | 锚点 Transform 若会移动则不会重新取点。与"锚点是固定点"的设定一致,但这是个隐含假设,将来若出现移动锚点需显式处理 |
|
| `MoveToAnchor` 只在 `OnEnter` 采样锚点 | 锚点 Transform 若会移动则不会重新取点。与"锚点是固定点"的设定一致,但这是个隐含假设,将来若出现移动锚点需显式处理 |
|
||||||
|
|||||||
Reference in New Issue
Block a user