Files
zeling_v2/Docs/Game/Design/Boss设计-程序开发文档-01.md
Joywayer f74d7f1877 Add independent review reports for Minimap system (Rounds 8, 9, and 26)
- Round 8 report highlights improvements in architecture, editor usability, and data robustness, with a total score of 80/100.
- Round 9 report focuses on editor extension capabilities, identifying issues with room data indexing and layout editing, resulting in a score of 76/100.
- Round 26 report evaluates the system against commercial standards, noting new issues and confirming previous fixes, with a score of 95.8/100.
2026-05-25 23:15:12 +08:00

333 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Boss 设计 — 程序开发文档 01
> 依据《Boss设计-动作需求表-01》整理供程序端实现参考。
> 包含状态机、阶段系统、AI 行为逻辑、技能规格、特殊机制说明。
---
## 目录
- [嘲风 — 概述](#嘲风--概述)
- [阶段系统](#阶段系统)
- [状态机总览](#状态机总览)
- [状态列表](#状态列表)
- [AI 行为逻辑](#ai-行为逻辑)
- [技能规格](#技能规格)
- [特殊机制](#特殊机制)
- [技术备注](#技术备注)
---
## 嘲风 — 概述
| 字段 | 内容 |
|----------|-----------------------------------------------------------------------------------|
| 角色名称 | 嘲风 |
| 类别 | BOSS |
| 背景设定 | 龙九子之三,始龙和凤之子,掌管凤仙山,因愧疚情绪被黑麒麟天魂碎片侵蚀神智 |
| 战斗阶段数 | **2 个阶段** |
| 阶段切换条件 | HP 降至阈值建议策划配置参考值50% |
| 主要武器 | 折扇 |
| 行动方式 | 阶段一:地面移动;阶段二:空中漂浮(位移由程序控制) |
---
## 阶段系统
### 阶段一Phase 1— 地面战
- 嘲风在地面移动、使用扇子进行近远程攻击
- 可用技能:回旋扇、挥扇三连、小龙卷、大龙卷
- 结束条件HP ≤ 切换阈值 → 触发 `PhaseTransition` 动画
### 阶段二Phase 2— 空中战
- 嘲风漂浮至空中,使用风石技能
- 程序负责垂直位移(漂浮高度);动画只做原地浮动姿态
- 新增机制:**击落系统**(玩家在空中攻击嘲风达到计数阈值 → 触发击落)
- 击落后进入地面硬直窗口 → 恢复漂浮 → 继续循环
- ⚠️ **待策划确认**Phase 2 是否仍可使用 Phase 1 的回旋扇/小龙卷/大龙卷等技能?当前文档按"Phase 2 仅用风石"处理。
---
## 状态机总览
```
══════════════════════ 战斗前 ══════════════════════
[Dialogue_Idle] ──战斗触发──▶ [Appear]
│ 播放完毕
══════════════════════ Phase 1 ══════════════════════
[P1_Idle]
│ AI 决策
┌───────────────────┼────────────────────┐
▼ ▼ ▼
[P1_Move] [Skill_Boomerang_Start] [Skill_FanCombo]
│ ──▶ [Skill_Boomerang_Loop] │
│ ──▶ [Skill_Boomerang_End] │
│ [Skill_TornadoSmall]
│ [Skill_TornadoLarge]
└──────────────────▶[P1_Idle]◀───────────┘
HP ≤ 阶段阈值(任意 Phase 1 状态均可触发)
└──▶ [PhaseTransition] ──浮空完成──▶ 进入 Phase 2
注:切换瞬间强制终止当前技能(如回旋扇弹道立即销毁)
══════════════════════ Phase 2 ══════════════════════
[P2_Idle_Float]
│ AI 决策
┌─────────────┴──────────────┐
▼ ▼
[Skill_WindStone_Charge] [P2_Idle_Float]CD冷却中
[Skill_WindStone_Loop]
[Skill_WindStone_Release] ──▶ [P2_Idle_Float]
Phase 2 任意状态hitCount ≥ 阈值 ──▶ [Knockdown_Hit](打断当前动作)
[Fall_Down]
│ 落地
[Stagger](复用 Defeat_Pant 动画Clip
│ 硬直结束
[FloatUp] ──▶ [P2_Idle_Float]
hitCount 重置为 0
══════════════════════ 击败流程(任意阶段 HP 归零)══════════════════════
[Defeat_Struggle] ──挣扎结束──▶ [白屏特效] ──▶ [Defeat_Pant] ──▶ [Defeat_StandUp]
```
---
## 状态列表
### 战斗前
| 状态 | 标识符 | 动画类型 | 说明 |
|----------|---------------|--------|------------------------------|
| 剧情待机 | Dialogue_Idle | 循环 | 战斗前剧情对话时的站立待机动作 |
| 登场 | Appear | 单次 | 捂脸喘息后爆发吼叫;结束后进入 P1_Idle |
### Phase 1
| 状态 | 标识符 | 动画类型 | 说明 |
|----------|----------------|------|----------------------------------|
| 战斗待机 | P1_Idle | 循环 | 折扇在胸前优雅扇风 |
| 移动 | P1_Move | 循环 | 快速踱步,向玩家方向靠近 |
| 回旋扇发生 | Skill_Boomerang_Start | 单次 | 向前投掷折扇(手中扇子消失,程序生成弹道) |
| 回旋扇持续 | Skill_Boomerang_Loop | 循环 | 手伸出等待扇子飞回 |
| 回旋扇收尾 | Skill_Boomerang_End | 单次 | 接回扇子(手中出现扇子) |
| 挥扇三连 | Skill_FanCombo | 单次 | 三连近身攻击第1、2击为挥舞动作第3击为旋转身体后用扇子捅刺 |
| 小龙卷 | Skill_TornadoSmall | 单次 | 由内向外挥扇,召唤左右两道小龙卷 |
| 大龙卷 | Skill_TornadoLarge | 单次 | 单手举高挥扇,在玩家当前位置召唤细长龙卷 |
### 阶段切换
| 状态 | 标识符 | 动画类型 | 说明 |
|--------|----------------|------|-----------------------------------------------|
| 转二阶段 | PhaseTransition | 单次 | 周围气流爆发,身体漂浮升空;**垂直位移由程序 Tween 控制,动画只做原地姿态** |
### Phase 2
| 状态 | 标识符 | 动画Clip名 | 动画类型 | 说明 |
|----------|------------------------|-----------------------------|------|-------------------------------------------------|
| 空中待机 | P2_Idle_Float | P2_Idle_Float需美术专门制作 | 循环 | 漂浮在空中;⚠️ 需策划确认是否复用 Phase 1 待机动画 |
| 风石蓄力 | Skill_WindStone_Charge | Skill_WindStone_Charge | 单次 | 收拢扇子并单手举高 |
| 风石引导 | Skill_WindStone_Loop | Skill_WindStone_Loop | 循环 | 手举高扇子,引导施法;此帧特效引导线**实时追踪**玩家位置 |
| 风石发生 | Skill_WindStone_Release | Skill_WindStone_Release | 单次 | 用力挥下扇子;**落点在 Loop→Release 切换瞬间锁定** |
| 空中受击 | Knockdown_Hit | Knockdown_Hit | 单次 | 被玩家击中足够次数后在空中的明显受击动作;**打断当前任意 Phase 2 状态** |
| 掉落 | Fall_Down | Fall_Down | 循环 | 从空中向下掉落;**垂直位移由程序控制,动画只做原地姿态** |
| 落地硬直 | Stagger | Defeat_Pant复用同一Clip | 循环 | 跪地喘息,可受击窗口;**直接复用击败流程 Defeat_Pant 同一动画Clip** |
| 浮起 | FloatUp | — | — | 程序控制漂浮回空中hitCount 重置为 0可无专用动画 |
### 击败流程
| 状态 | 标识符 | 动画类型 | 说明 |
|----------|----------------|------|-------------------------------------------|
| 挣扎 | Defeat_Struggle | 循环 | HP 归零触发,僵直挣扎,身上黑气向外消散,持续固定时间 |
| 白屏特效 | — | — | 程序触发全屏白色闪光,衔接后续动画 |
| 喘息跪地 | Defeat_Pant | 循环 | 白屏结束后单膝跪地喘息 |
| 站起 | Defeat_StandUp | 单次 | 从跪地过渡到站立(衔接后续剧情/结算) |
---
## AI 行为逻辑
### Phase 1 决策循环
```
[P1_Idle](决策节点,每次技能结束后回到此处)
├── 检测玩家位置与距离
│ ├── 玩家距离 > 近战阈值 → P1_Move靠近
│ └── 玩家在攻击范围内 → 技能选择
└── 技能选择(基于 CD 轮转 + 随机权重,建议策划配置)
├── 回旋扇Boomerang中远距离向前投掷弹道
├── 挥扇三连FanCombo近距离三段近程
├── 小龙卷TornadoSmall任意距离对称双侧弹道
└── 大龙卷TornadoLarge中远距离玩家当前位置落点
注:玩家跳跃到身后时应插入朝向检测 → 翻转 Sprite无需专用转身动画Phase 1
```
### Phase 2 决策循环
```
[P2_Idle_Float](漂浮待机)
├── 风石 CD 未冷却 → 保持漂浮
└── 风石 CD 冷却完毕 → Skill_WindStone_Charge → Loop → Release
同时:
每帧检测玩家是否在空中 → 开放空中受击计数
玩家空中攻击命中嘲风 → hitCount++
hitCount ≥ knockdownThreshold → 触发击落流程(详见特殊机制)
```
---
## 技能规格
### Skill_Boomerang — 回旋扇
| 字段 | 值 |
|----------|------------------------------------------------------|
| 技能类型 | 投掷弹道(往返) |
| 弹道对象 | 程序生成扇子弹道(动画手中扇子消失,弹道独立 GameObject |
| 飞行方向 | 向前水平飞出,到达最远距离或边界后原路返回 |
| 速度 | 可配置(去程速度 / 回程速度) |
| 伤害判定 | 去程 + 回程均造成伤害,每段触发一次(同一玩家不重复计算) |
| 回程结束 | 扇子飞回嘲风手中 → 触发 Skill_Boomerang_End 动画(手中出现扇子) |
| 扇子旋转特效 | ⚠️ **需美术提供独立旋转动画资源**(需求表注明"单独做一个扇子原地旋转的弹道动画");弹道 GameObject 挂载此 Animation Clip 循环播放,非纯程序旋转 |
### Skill_FanCombo — 挥扇三连
| 字段 | 值 |
|----------|------------------------------------------|
| 技能类型 | 近程三段连击 |
| 攻击段数 | 3 段(第 1、2 段:挥舞扇子;第 3 段:旋转身体后用扇子捅刺) |
| 每段伤害 | 可独立配置(第 3 段建议伤害略高) |
| 攻击范围 | 前方扇形/矩形碰撞盒,各段可配置不同尺寸;⚠️ 第 3 段"旋转身体"动作是否覆盖身体后方攻击范围,**需策划确认是否开启后方碰撞盒** |
| 中断逻辑 | 连击为单次动画不可中断受击时无打断效果Boss 无打断) |
### Skill_TornadoSmall — 小龙卷
| 字段 | 值 |
|----------|-----------------------------------------------------|
| 技能类型 | 对称双侧飞行弹道 |
| 生成数量 | 2 个(左侧 + 右侧各 1 个,以嘲风为中心同时生成) |
| 弹道方向 | 向左 / 向右水平飞出 |
| 形状 | 倒三角形(宽底在上,尖端在下) |
| 特性 | **玩家可跳跃越过**(碰撞盒高度不超过玩家起跳高度,建议策划配置高度) |
| 速度 | 可配置 |
| 伤害判定 | 飞行途中持续判定,每帧或间隔帧触发(建议间隔,避免帧率影响) |
### Skill_TornadoLarge — 大龙卷
| 字段 | 值 |
|----------|---------------------------------------------|
| 技能类型 | 定点召唤持续伤害区域 |
| 落点 | **玩家施法时当前位置**(动画起手帧锁定玩家坐标) |
| 形状 | 细长柱状(上下等宽,区别于小龙卷) |
| 持续时间 | 可配置 |
| 伤害判定 | 存在期间持续判定 |
| 警示机制 | 建议在召唤前于落点显示预警特效(策划确认是否需要) |
### Skill_WindStone — 风石Phase 2 专属)
| 字段 | 值 |
|----------|------------------------------------------------------|
| 技能类型 | 追踪引导 → 定点落体 |
| 引导阶段 | Skill_WindStone_Loop 期间,特效引导线实时追踪玩家位置 |
| 落点锁定 | 引导结束Skill_WindStone_Release 帧)时锁定玩家当前位置 |
| 落下对象 | 巨大风石 GameObject程序控制下落速度 |
| 落地效果 | 砸地冲击波范围伤害 + 震动反馈 |
| 伤害判定 | 落地帧触发圆形范围判定(半径可配置) |
| 引导时长 | 可配置(引导时间越长给玩家预判越多) |
---
## 特殊机制
### 阶段切换机制
```
触发条件HP ≤ PhaseThreshold百分比策划配置
流程:
1. 强制终止当前技能,进入 PhaseTransition 状态
2. 播放气流爆发特效
3. 程序 Tween 控制嘲风 Y 轴位移(从地面升至空中高度 H
4. 动画播放原地漂浮姿态
5. 达到目标高度后切换至 P2_Idle_Float激活 Phase 2 AI
注:阶段切换期间嘲风无敌(关闭受击碰撞盒)
```
### 击落机制Phase 2
```
条件玩家在空中isGrounded == false攻击命中嘲风
计数hitCount 累计(不限攻击方式)
阈值knockdownThreshold策划配置建议 510 次)
触发后:
1. 播放 Knockdown_Hit 动画(嘲风空中受击)
2. 程序控制嘲风 Y 轴下落Tween 或物理)
3. 落地时播放 Fall_Down 动画(原地)
4. 进入 Stagger硬直可受击窗口时长策划配置
5. 硬直结束 → 程序控制嘲风浮回空中
6. hitCount 重置为 0
注:
- 落地后 Stagger 期间为脆弱窗口,不执行任何技能
- hitCount 重置时机:浮回空中完成后(非击落完成后)
- ⚠️ **待确认**:击落计数是否可以打断 Skill_WindStone_Charge/Loop/Release 施法中的嘲风?
- 方案 A打断hitCount 阈值高优先级,任意时机生效)
- 方案 B不打断Skill_WindStone 期间屏蔽计数,施法后再检测)
- 当前文档按"方案 A任意状态均可打断"处理,如需方案 B 请通知程序
```
### 嘲风受击(一般)
- Phase 1正常受击动画**需求表无专用受击动画**,建议通用 Hit Flash + 镜头轻微抖动;策划可确认是否额外添加 Boss 专用受击动作)
- Phase 2 空中:普通攻击命中累计计数,不打断技能(攻击不影响技能流程,仅计数)
---
## 技术备注
1. **位移控制分离**PhaseTransition 升空、Fall_Down 坠落、FloatUp 浮起均由程序 Tween建议使用 DOTween控制 Y 轴位移;动画 Animator 只控制姿态,**不含位移曲线**。
2. **弹道生成**
- 回旋扇:在 Skill_Boomerang_Start 动画的"扇子离手"帧AnimationEvent实例化弹道同帧关闭嘲风手部扇子 Sprite。
- 小/大龙卷在技能发生帧AnimationEvent于指定位置 Spawn 龙卷 GameObject。
3. **技能 CD 与权重**:所有技能的冷却时间、选择权重统一放入 `BossDataSO`ScriptableObject禁止硬编码。
4. **阶段 HP 阈值**:建议在 `BossHealthComponent` 中注册事件HP 到达阈值时广播 `OnPhaseChanged(2)` 事件,由状态机监听处理。
5. **击败流程锁定**:进入 `Defeat_Struggle` 后,关闭所有 AI、受击碰撞盒直到 `Defeat_StandUp` 播放完毕后再派发 `BossDefeated` 事件。
6. **剧情衔接**`Appear``Defeat_StandUp` 动画结束后通过事件系统(`BaseGames.Core.Events`)通知剧情系统,不在 Boss 本体内耦合剧情逻辑。
7. **音效/特效调用**:所有音效和特效均通过 AnimationEvent 调用,事件参数传递 key 字符串,由 VFXManager / AudioManager 统一管理。
---
## 快速参数表(策划待填写)
| 参数名 | 说明 | 默认值(待确认) |
|--------------------------|------------------------|----------|
| `phaseThreshold` | 阶段切换 HP 百分比 | 50% |
| `knockdownThreshold` | 触发击落所需空中命中次数 | 8 |
| `staggerDuration` | 落地硬直时长(秒) | 3.0 |
| `boomerangSpeed` | 回旋扇飞行速度 | — |
| `boomerangMaxRange` | 回旋扇最远飞行距离 | — |
| `tornadoSmallSpeed` | 小龙卷飞行速度 | — |
| `tornadoSmallHeight` | 小龙卷碰撞盒高度(玩家可跳越) | — |
| `tornadoLargeDuration` | 大龙卷持续时间(秒) | — |
| `windStoneGuideTime` | 风石引导时长(秒) | — |
| `windStoneImpactRadius` | 风石落地冲击范围半径 | — |
| `floatHeight` | Phase 2 漂浮高度(单位:场景单位) | — |
| `floatRiseDuration` | 升空动画时长(秒) | — |
| `floatFallDuration` | 击落后坠落时长(秒) | — |