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.
This commit is contained in:
2026-05-25 23:15:12 +08:00
parent e2bc324905
commit f74d7f1877
53 changed files with 6825 additions and 270 deletions

View File

@@ -0,0 +1,22 @@
| 角色 | 类别 | 角色设定 | 动作类别 | 动作类型 | 描述 |
| ---------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------------------------------------- |
| 嘲风 | BOSS | 龙九子之三,始龙和凤之子,管辖着凤仙山这片区域,因愧疚情绪被掌管的黑麒麟天魂碎片侵蚀了神智。 | 剧情对话 | 循环 | 进入战斗前的站立待机动作,用于剧情对话 |
| 登场 | 单次 | 进入战斗前,持续捂脸喘息后全身爆发吼叫 | | | |
| 待机 | 循环 | 战斗时的待机动作,折扇在胸前优雅的扇风 | | | |
| 移动 | 循环 | 快速踱步接近玩家 | | | |
| 回旋扇 | 技能发生 | 单次 | 将扇子向前扔出,单独做一个扇子原地旋转的弹道动画,嘲风做完动作后手中扇子消失,由程序来生成弹道 | | |
| 技能持续 | 循环 | 保持扔出动作,手持续伸出准备接住回旋的扇子 | | | |
| 技能收尾 | 单次 | 收回飞回来的扇子,手中出现扇子 | | | |
| 挥扇攻击(三连) | 技能发生 | 单次 | 收拢扇子进行近身三连击,第一第二击为挥舞,第三击为旋转身体后用扇子捅的动作 | | |
| 小龙卷技能 | 技能发生 | 单次 | 由内向外挥动扇子,召唤两道小型龙卷风(倒三角形状,可跳跃越过)从身体左右两侧飞出 | | |
| 大龙卷技能 | 技能发生 | 单次 | 单手举高挥动扇子(类似《拳皇》中高尼兹召唤旋风)在玩家当前所在地点召唤一道细长的龙卷风(上下同宽) | | |
| 转二阶段 | 阶段转换 | 单次 | 低血量时转阶段的动作,周围爆发气流,身体漂浮至空中(动作只做原地漂浮,上下的位移由程序控制) | | |
| 风石 | 技能抬手 | 单次 | 收拢扇子并单手举高 | | |
| 技能持续 | 循环 | 保持手高举扇子,引导施法(此时技能特效引导线会追踪玩家) | | | |
| 技能发生 | 单次 | 用力挥下折起的扇子,巨大风石落下 | | | |
| 击落 | 受击 | 单次 | 二阶段玩家在空中击中足够次数后,嘲风在空中有一个明显的受击动作 | | |
| 掉落 | 循环 | 嘲风从空中掉落(动作只做原地掉落动作,上下的位移由程序控制) | | | |
| 硬直 | 循环 | 击落后的跪地喘息动作,同击败后的喘息跪地动作 | | | |
| 被击败 | 发生 | 循环 | 被击败前的僵直挣扎动作,持续一段时间,期间身上的黑气向外消散(随后衔接白屏屏幕特效) | | |
| 喘息 | 循环 | 白屏过后,单膝跪地在地面喘息的动作 | | | |
| 站起 | 单次 | 从跪地过渡到站起 | | | |

View File

@@ -0,0 +1,332 @@
# 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` | 击落后坠落时长(秒) | — |

View File

@@ -0,0 +1,47 @@
| 编号 | 角色 | 类别 | 角色设定 | 动画类别 | 动作命名 | 动画类型 | 动画描述 | 帧数(f) | 图片参考 |
| ------------- | ------------ | ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------- | ------------------------------------------------------------ | ------- | -------- |
| E001_CaoZhi | 草蛭 | 小怪 | 蛭妖中底层的小妖,由于长期生活在阴暗的井底,背上长有发着微光的菌类植物。身上有滑溜溜的黏液 平时蜷缩成一团伪装自己,察觉到猎物后就会张开血盆大口匍匐前进 | 待机 | Idle | 循环 | 静止不动于地面,每过一段时间会轻微抽搐一下(身体蜷缩,牙齿隐藏起来,在地面上假扮长有植物的石头) | | |
| 行走 | Move | 循环 | 慢速爬行巡逻 | | | | | | |
| 转身 | Flip | 单次 | 转身衔接动作 | | | | | | |
| 技能 | 技能开始 | Skill_Start | 单次 | 发现目标后张开大口(瞬间有口水粘液溅出),身体打开,准备前进动作 | | | | | |
| 技能持续 | Skill_Loop | 循环 | 身体一缩一缩持续的爬向目标的过程 | | | | | | |
| 技能结束 | Skill_End | 单次 | 丢失目标后,略微收起张开的尖牙,切换到慢速巡逻 | | | | | | |
| 死亡 | Death | 单次 | 身躯干瘪死亡 | | | | | | |
| | | | | | | | | | |
| E002_HuangZhi | 簧蛭 | 小怪 | 无法移动,属于陷阱类型的小怪,像弹簧一样可以伸缩自己的身体,平时身体收缩在上方的岩壁中,发现猎物经过则会钻出伸出身子啃咬对方 | 待机 | Idle | 循环 | 躲藏在岩壁上方,只看得到一点头露出来的剪影,每间隔一段时间可以看到略微的蠕动 | | |
| 技能 | 技能发生 | Skill_Start | 单次 | 从岩壁上钻出来啃咬对方,需要表现钻出来后身躯变形和甩动的张力 | | | | | |
| 技能持续 | Skill_Loop | 循环 | 攻击结束后有一小段时间身体悬挂在岩壁上轻微晃动(此时可被玩家攻击) | | | | | | |
| 技能收尾 | Skill_End | 单次 | 将身体缩回岩壁 | | | | | | |
| 死亡 | Death | 单次 | 身体爆开,飞溅出少量黏液死亡,留下一小截身躯悬挂 | | | | | | |
| | | | | | | | | | |
| E003_YouZhi | 幼蛭 | 小怪 | 蛭妖的幼虫形态,最底层最脆弱的小妖,以极其缓慢的速度爬行 | 待机 | Idle | 循环 | 吸附在岩壁上方时的待机,以时不时轻微蠕动的黑色剪影来表现 | | |
| 移动 | Move | 循环 | 掉到地面后的动作,缓慢的爬行 | | | | | | |
| 掉落 | Fall | 循环 | 进入战斗状态会从空中掉落,画出身子转动掉落的效果 | | | | | | |
| 技能 | 技能持续 | Skill | 循环 | 发现目标后加速爬向对方(比自身移动快一些,相比其他小怪依旧较慢) | | | | | |
| 死亡 | Death | 单次 | 被一击即死,溅出少量酸液,身体干瘪 | | | | | | |
| | | | | | | | | | |
| E004_ZhiMu | 蛭母 | 小BOSS | 原本是侍奉天神的仆众之一,偶然发现下界的人间自由不受拘束,于是逃往人间。在下界兴风作浪,嗜血成性,被天神之一的嘲风镇压于轮回之井中。 | 静止 | Static | 循环 | 战斗触发前处于休眠的静止动作,牙齿和嘴部蜷缩起来,低垂着头部 | 1 | |
| 出场 | Appear | 单次 | 登场时的吼叫示威动作,由静止动作开始,结束可衔接至战斗待机 | | | | | | |
| 待机 | Idle | 循环 | 战斗中的呼吸待机动作,身上触手会轻微蠕动 | | | | | | |
| 移动 | Move | 循环 | 挪动身子向前移动,用于战斗中调整身位 | | | | | | |
| 转身 | Flip | 单次 | 玩家跳至身后时的转身衔接动作 | | | | | | |
| 撕咬技能 | 技能发生 | Skill01 | 单次 | 近距离攻击,头部向后蓄力然后突然向前延伸啃咬前方目标,有较大前摇 | | | | | |
| 头槌技能 | 技能开始 | Skill02_Start | 单次 | 头槌技能的前摇动作,牙齿紧闭头部缩成一个圆球,蓄力准备砸向地面 | | | | | |
| 技能持续 | Skill02_Loop | 循环 | 反复用头撞向地面(做单次砸地就好),需要表现出动作张力,可画出身体拉扯来表现速度和力量感 | | | | | | |
| 技能结束 | Skill02_End | 单次 | 技能结束后,有一个疲惫的喘息硬直动作 | | | | | | |
| 酸液技能 | 技能发生 | Skill_03 | 单次 | 嘴巴“咕噜”抖动后,向上喷吐出若干团状酸液,以抛物线的形式散落 | | | | | |
| 死亡 | 死亡持续 | Death_Pre | 循环 | 死亡前的僵直挣扎动作,持续一段时间 | | | | | |
| 死亡发生 | Death | 单次 | 挣扎结束后,身体爆开一瞬间溅出黏液,随即消散死亡 | | | | | | |
| | | | | | | | | | |
| E005_FeiZhi | 肥蛭 | 精英怪 | 体型肥硕的蛭妖,死亡后尸体会爆出若干幼蛭 | 待机 | Idle | 循环 | 静止时的呼吸待机动作 | | |
| 移动 | Move | 循环 | 扭动肥硕的身躯移动,需表现身躯导致的行动艰难感觉 | | | | | | |
| 撕咬技能 | 技能发生 | Skill01 | 单次 | 近距离攻击,蓄力后向前延伸啃咬目标,由于身躯肥大,有一个较大的趴在地面的僵直,之后起身回到待机 | | | | | |
| 酸液技能 | 技能发生 | Skill02 | 单次 | 连续两次吐出一团酸液成抛物线攻击(只需画单次动作) | | | | | |
| 死亡持续 | Death_Pre | 循环 | 死亡时触发的技能,挣扎的僵直动作,肚子里即将有东西钻出的感觉 | | | | | | |
| 死亡 | Death | 单次 | 肚子爆开,伴随着酸液溅出,同时会掉落若干幼蛭(这个由程序实现) | | | | | | |
| | | | | | | | | | |
| E006_Huan | 讙 | 小怪 | 随处可见的小型野兽,身形似狸猫,独眼长耳,三条尾巴向上卷起,形象可参考山海经中的“讙”。 | 待机 | Idle | 循环 | 静止时的呼吸待机动作 | | |
| 移动 | Move | 循环 | 日常巡逻时慢步的走动 | | | | | | |
| 转身 | Flip | 单次 | 转身衔接动作 | | | | | | |
| 技能 | 技能发生 | Skill | 循环 | 发现目标后向前小跳爪击对方,有少许起跳前摇动作,动画只需做出原地滞空攻击的动作即可,前跳的位移部分由程序实现 | | | | | |
| 死亡 | Death | 单次 | 四肢瘫软倒地(程序会做尸体消散) | | | | | | |

View File

@@ -0,0 +1,536 @@
# 小怪设计 — 程序开发文档 01
> 依据《小怪设计-动作需求表-01》整理供程序端实现参考。
> 包含状态机、AI 行为逻辑、技能规格、特殊机制说明。
---
## 目录
- [E001 草蛭](#e001-草蛭)
- [E002 簧蛭](#e002-簧蛭)
- [E003 幼蛭](#e003-幼蛭)
- [E004 蛭母小BOSS](#e004-蛭母小boss)
- [E005 肥蛭(精英怪)](#e005-肥蛭精英怪)
- [E006 讙](#e006-讙)
---
## E001 草蛭
### 基本信息
| 字段 | 内容 |
|--------|----------------------------------------------------------------------|
| 编号 | E001_CaoZhi |
| 类别 | 小怪 |
| 行动方式 | 地面爬行 |
| 核心机制 | 伪装待机 → 发现玩家 → 追击攻击;具备侦测范围触发开关 |
### 状态机
```
[Idle_Disguise] ──感知玩家──▶ [Skill_Start]
[Skill_Loop] ──丢失目标──▶ [Skill_End] ──▶ [Move_Patrol]
受到足够伤害
[Death]
[Move_Patrol] ──感知玩家──▶ [Skill_Start]
[Move_Patrol] ──到达边界──▶ [Flip] ──▶ [Move_Patrol]
```
### 状态列表
| AI状态标识符 | 动画Clip名Animator用 | 类型 | 说明 |
|--------------|----------------------|------|----------------------------------------------------|
| Idle_Disguise | Idle | 循环 | 蜷缩在地面,外观似带植物的石头;每隔随机时间轻微抽搐一次 |
| Move_Patrol | Move | 循环 | 低速爬行巡逻,可在平台边缘翻转 |
| Flip | Flip | 单次 | 转向后衔接 Move_Patrol |
| Skill_Start | Skill_Start | 单次 | 张口,覆盖口水粒子特效,切换至追击状态 |
| Skill_Loop | Skill_Loop | 循环 | 快速爬行追击玩家 |
| Skill_End | Skill_End | 单次 | 收回尖牙,切换回巡逻 |
| Death | Death | 单次 | 身体干瘪(需求表描述:身躯干瘪死亡),播放后移除 GameObject |
### AI 行为
```
感知条件:视线检测 OR 碰撞触发区(圆形半径建议可配置)
├── 未感知玩家 → Idle_Disguise默认或 Move_Patrol已激活后丢失目标
└── 感知玩家
├── 进入 Skill_Start一次性播放
└── 追击 Skill_Loop速度[追击速度] > [巡逻速度]
├── 追击途中碰到玩家 → 造成接触伤害(持续判定)
└── 超出感知范围 → Skill_End → Move_Patrol
E001 无主动技能CD再次进入感知范围立即触发追击
```
### 技能规格
| 技能 | 触发条件 | 伤害类型 | 攻击范围 | 备注 |
|------|----------|--------|-------------|-----------------------------------|
| 追击啃咬 | 进入感知范围 | 接触伤害 | 自身碰撞体Collider | Skill_Loop 期间碰撞盒始终开启;无弹道,纯移动追击 |
### 技术备注
- Idle 伪装期间建议关闭 NavAgent / 移动组件,仅保留感知触发器。
- 追击速度、感知范围、伪装抽搐间隔建议通过 ScriptableObject 配置。
- 死亡无专用受击-死亡过渡动画HP≤0 直接播放 Death。
### 快速参数表(策划待填写)
| 参数名 | 说明 | 参考值 |
|-------------------|-----------------------------|-------|
| `maxHP` | 最大生命值 | — |
| `moveSpeed` | 巡逻速度 | — |
| `chaseSpeed` | 追击速度Skill_Loop 期间) | — |
| `detectRadius` | 感知触发半径 | — |
| `contactDamage` | 接触伤害值 | — |
---
## E002 簧蛭
### 基本信息
| 字段 | 内容 |
|--------|--------------------------------------------------------------|
| 编号 | E002_HuangZhi |
| 类别 | 小怪 |
| 行动方式 | **固定位置**,无法移动,属于陷阱型 |
| 核心机制 | 藏于天花板 → 玩家经过检测区 → 钻出啃咬 → 悬挂可受击窗口 → 缩回 |
### 状态机
```
[Idle_Hidden] ──玩家进入触发区──▶ [Skill_Start]
[Skill_Loop] (悬挂,可受击)
冷却结束 / 玩家离开
[Skill_End] ──▶ [Idle_Hidden]
[任意状态] ──HP归零──▶ [Death]
```
### 状态列表
| 状态 | 动画名 | 类型 | 说明 |
|----------|------------|------|-----------------------------------------------|
| 隐藏待机 | Idle | 循环 | 岩壁上仅露出头部剪影,间歇蠕动 |
| 攻击发生 | Skill_Start | 单次 | 从岩壁钻出,身躯拉伸甩动,造成伤害 |
| 悬挂可受击 | Skill_Loop | 循环 | 身体悬挂岩壁轻微晃动;**此阶段碰撞盒开放,可被玩家攻击** |
| 缩回 | Skill_End | 单次 | 缩回岩壁,过渡到 Idle |
| 死亡 | Death | 单次 | 爆体溅出黏液,留下短截身体悬挂,关闭碰撞 |
### AI 行为
```
持续检测正下方(矩形感知区,宽度略大于自身碰撞体宽度)
├── 玩家未进入 → Idle_Hidden冷却计时重置
└── 玩家进入触发区 AND 当前为 Idle_Hidden
├── 进入 Skill_Start向下延伸开启攻击碰撞盒
├── Skill_Start 播放完毕 → Skill_Loop悬挂
│ ├── 悬挂持续时间到 → Skill_End → Idle_Hidden进入冷却
│ └── HP 归零 → Death
└── 冷却期间玩家再次进入触发区:忽略(等待冷却结束)
```
### 技能规格
| 技能 | 触发条件 | 伤害类型 | 攻击范围 | 攻击次数 | 备注 |
|------|---------------|--------|----------------------|------|----------------|
| 钻出啃咬 | 玩家进入正下方感知区 | 瞬时伤害 | Skill_Start 期间碰撞盒 | 1 次 | 悬挂期无攻击判定,仅可受击 |
### 技术备注
- 固定于特定平台点位,不需要 NavAgent。
- Skill_Loop 期间:攻击碰撞盒关闭,受击碰撞盒开启(可被玩家攻击)。
- 悬挂时长、冷却时长建议 ScriptableObject 配置。
- 死亡后保留部分身体 Sprite不完全消除可用单独的静态 Sprite 替换。
### 快速参数表(策划待填写)
| 参数名 | 说明 | 参考值 |
|-------------------|-----------------------|-------|
| `maxHP` | 最大生命值 | — |
| `attackDamage` | 钻出啃咬伤害值 | — |
| `hangDuration` | Skill_Loop 悬挂时长(秒)| — |
| `cooldownDuration`| 缩回后进入下次攻击的冷却(秒)| — |
| `detectWidth` | 感知区水平宽度 | — |
---
## E003 幼蛭
### 基本信息
| 字段 | 内容 |
|--------|---------------------------------------------------|
| 编号 | E003_YouZhi |
| 类别 | 小怪 |
| 行动方式 | 天花板吸附 → 掉落地面 → 地面爬行 |
| 核心机制 | 两种出现方式:①场景预置于天花板,战斗触发后掉落;②由 E005 肥蛭死亡时 Spawn极低生命值一击即死 |
### 状态机
```
[Idle_Ceiling] ──战斗区域激活──▶ [Fall] ← 场景预置路径
[Spawn_Point] ──肥蛭死亡生成──▶ [Fall] ← 肥蛭生成路径
落地检测
[Move] ──感知玩家──▶ [Skill]
[Move] ◀──丢失目标────┘
[任意状态] ──HP归零──▶ [Death]
```
### 状态列表
| 状态 | 动画名 | 类型 | 说明 |
|--------|-------|------|------------------------------------|
| 天花板待机 | Idle | 循环 | 吸附岩壁剪影,间歇蠕动 |
| 掉落 | Fall | 循环 | 旋转下落,直到落地触发 Move |
| 地面爬行 | Move | 循环 | 缓慢爬行(速度为基础移动速度) |
| 快速追击 | Skill | 循环 | 加速爬行追击(速度约 1.5× Move 速度),碰到玩家造成伤害 |
| 死亡 | Death | 单次 | 溅出少量酸液,身体干瘪,一击即死 |
### AI 行为
```
生成时默认处于 Idle_Ceiling
战斗区域激活 / 被生成 → Fall重力控制不受玩家输入影响
落地 →
├── 感知玩家 → Skill追击
│ ├── 接触玩家 → 造成伤害
│ └── 丢失玩家 → Move巡逻
└── 未感知玩家 → Move
```
### 技能规格
| 技能 | 触发条件 | 伤害类型 | 攻击范围 | 备注 |
|------|----------|--------|-----------|-------------|
| 快速追击 | 感知玩家 | 接触伤害 | 自身碰撞体 | 一击即死HP=1 |
### 技术备注
- Fall 阶段建议使用 Rigidbody 物理重力,不做路径导航。
- 一击即死HP 设为 1任意来源伤害均触发 Death。
- **出现方式双路支持**
- 预置路径:在关卡中放置 Idle_Ceiling 实例,战斗区域触发时激活 Fall
- 生成路径:由 E005 肥蛭死亡时调用 `SpawnEnemy(E003, position, count)` 生成,生成后直接进入 Fall 状态。
### 快速参数表(策划待填写)
| 参数名 | 说明 | 参考值 |
|-----------------|----------------------|-------|
| `maxHP` | 最大生命值(一击即死=1| 1 |
| `moveSpeed` | 落地后爬行速度 | — |
| `chaseSpeed` | 追击速度 | — |
| `detectRadius` | 感知半径 | — |
| `contactDamage` | 接触伤害值 | — |
---
## E004 蛭母小BOSS
### 基本信息
| 字段 | 内容 |
|--------|--------------------------------------------------------------------------|
| 编号 | E004_ZhiMu |
| 类别 | 小 BOSS |
| 行动方式 | 地面移动 |
| 核心机制 | 有出场剧情;具备三种技能(撕咬、头槌连段、酸液远程);死亡分两阶段(死前挣扎 → 爆体消散) |
### 状态机
```
[Static] ──战斗触发──▶ [Appear] ──完毕──▶ [Idle]
[Idle] ──AI 决策──┬──▶ [Skill01_Bite](撕咬)
├──▶ [Skill02_Start](头槌前摇)──▶ [Skill02_Loop]──▶ [Skill02_End]
├──▶ [Skill03_Acid](酸液喷吐)
└──▶ [Move] ──到达位置──▶ [Idle]
[Move] ──玩家跳至身后──▶ [Flip] ──▶ [Move / Idle]
[任意战斗状态] ──HP归零──▶ [Death_Pre] ──循环结束──▶ [Death]
```
### 状态列表
| 状态 | 动画名 | 类型 | 说明 |
|-------------|------------|------|------------------------------------------|
| 休眠静止 | Static | 循环 | 战斗未触发,牙齿收拢,头部低垂 |
| 出场 | Appear | 单次 | 吼叫示威,结束衔接 Idle |
| 战斗待机 | Idle | 循环 | 呼吸待机,触手轻微蠕动 |
| 移动 | Move | 循环 | 向玩家方向移动,调整攻击距离 |
| 转身 | Flip | 单次 | 玩家绕至身后时触发 |
| 撕咬 | Skill01 | 单次 | 近程,头部后蓄力后前突啃咬;前摇明显 |
| 头槌前摇 | Skill02_Start | 单次 | 头部蜷缩成球蓄力 |
| 头槌循环 | Skill02_Loop | 循环 | 反复砸地(单次砸地动作循环),可配置砸地次数 |
| 头槌结束 | Skill02_End | 单次 | 喘息硬直,**此阶段可受击,攻击不判定** |
| 酸液喷吐 | Skill_03 | 单次 | 嘴部抖动后向上喷出多团酸液,以抛物线散落 |
| 死亡前挣扎 | Death_Pre | 循环 | HP 归零后触发,僵直挣扎;持续固定时间后衔接 Death |
| 死亡 | Death | 单次 | 爆体,溅出黏液,消散 |
### AI 行为
```
战斗循环Idle 为决策节点):
1. 检测玩家距离
├── 玩家超出近战范围 → Move靠近
└── 玩家在近战范围内 → 技能选择
2. 技能选择(权重/CD轮转建议策划可配置
├── Skill01撕咬玩家在近距离且正面 → 近程突刺伤害CD[skill01CD]秒
├── Skill02头槌玩家在近中距离 → 多次砸地造成范围震地伤害CD[skill02CD]秒
└── Skill03酸液玩家距离较远/刚进入战斗 → 向玩家位置抛出多颗酸液弹CD[skill03CD]秒
3. 玩家绕后(跳跃至蛭母身后)→ 优先插入 Flip仅从 Idle 或 Move 状态触发
⚠️ 注Flip 不可打断正在施放的技能
```
### 技能规格
#### Skill01 — 撕咬
| 字段 | 值 |
|----------|------------------------|
| 攻击类型 | 近程瞬时 |
| 攻击范围 | 头部前方碰撞盒(宽×高可配置) |
| 伤害帧 | 动作到达最前伸位置时判定(单帧) |
| 前摇 | 较大(动画帧数见动作需求表) |
| 硬直(玩家) | 策划配置 |
#### Skill02 — 头槌
| 字段 | 值 |
|----------|----------------------------------|
| 攻击类型 | 范围震地 |
| 伤害范围 | 砸地落点附近圆形/矩形区域(建议策划配置半径) |
| 砸地次数 | 可配置(建议 24 次) |
| 每次间隔 | 由 Skill02_Loop 动画帧率决定 |
| 硬直窗口 | Skill02_End 阶段为硬直,期间关闭攻击盒,开放受击 |
#### Skill03 — 酸液喷吐
| 字段 | 值 |
|----------|--------------------------------------------------|
| 攻击类型 | 远程抛物弹道 |
| 弹数 | 多颗(可配置,建议 35 颗) |
| 落点分布 | 以玩家当前位置为中心,向两侧随机偏移散布(建议策划配置范围) |
| 弹道 | 抛物线(设置初速度与重力系数即可) |
| 落地效果 | 酸液溅射粒子 + 落地持续伤害区(建议策划决定是否留存伤害区域) |
### 技术备注
- Appear 动画播放期间暂停 AI完成后激活战斗循环。
- 技能 CD 和选择权重建议独立 ScriptableObject 配置。
- Death_Pre 结束后短暂白屏/闪光特效,再播放 Death。
- 转身Flip需检测玩家相对朝向仅在 Idle / Move 状态下每帧检测,技能执行中不检测。
### 快速参数表(策划待填写)
| 参数名 | 说明 | 参考值 |
|-------------------|---------------------------|-------|
| `maxHP` | 最大生命值 | — |
| `moveSpeed` | 移动速度 | — |
| `detectRange` | 感知距离 | — |
| `skill01Damage` | 撕咬伤害 | — |
| `skill01CD` | 撕咬冷却(秒) | — |
| `skill02HitCount` | 头槌砸地次数 | — |
| `skill02Damage` | 每次头槌伤害 | — |
| `skill02CD` | 头槌冷却(秒) | — |
| `skill02StaggerDuration` | Skill02_End 硬直时长 | — |
| `skill03Count` | 酸液弹数 | — |
| `skill03Damage` | 每颗酸液伤害 | — |
| `skill03CD` | 酸液冷却(秒) | — |
---
## E005 肥蛭(精英怪)
### 基本信息
| 字段 | 内容 |
|--------|------------------------------------------|
| 编号 | E005_FeiZhi |
| 类别 | 精英怪 |
| 行动方式 | 地面移动(移动缓慢,体型大) |
| 核心机制 | 死亡时在原位生成若干 E003 幼蛭;具备近程撕咬和远程酸液两种技能 |
### 状态机
```
[Idle] ──AI决策──┬──▶ [Move] ──到达位置──▶ [Idle]
├──▶ [Skill01_Bite](撕咬)──▶ [Idle]
└──▶ [Skill02_Acid](酸液)──▶ [Idle]
[任意战斗状态] ──HP归零──▶ [Death_Pre] ──播放完毕──▶ [Death](生成幼蛭 + 爆体)
```
### 状态列表
| 状态 | 动画名 | 类型 | 说明 |
|----------|----------|------|----------------------------------------------|
| 待机 | Idle | 循环 | 呼吸待机 |
| 移动 | Move | 循环 | 肥硕扭动,移动速度较低 |
| 撕咬 | Skill01 | 单次 | 近程前伸啃咬;攻击结束后有趴地硬直,再起身回 Idle |
| 酸液 | Skill02 | 单次 | 连续两次吐出酸液团(逻辑上循环两次单次动画,或直接做循环动画) |
| 死亡前挣扎 | Death_Pre | 循环 | HP 归零后触发,肚子膨胀蠕动,表现有东西即将钻出 |
| 死亡 | Death | 单次 | 肚子爆开,溅出酸液,同时 Spawn 幼蛭 |
### AI 行为
```
战斗循环:
检测玩家距离
├── 远距离 → Skill02酸液远程攻击或 Move 靠近CD[skill02CD]秒
└── 近距离 → Skill01撕咬CD[skill01CD]秒
死亡触发(特殊):
HP ≤ 0 → Death_Pre → Death
Death 动画关键帧事件(或 AnimationEvent触发
SpawnEnemies(E003_YouZhi, count=策划配置, position=自身位置)
```
### 技能规格
#### Skill01 — 撕咬
| 字段 | 值 |
|------|--------------------------------|
| 攻击范围 | 头部前方碰撞盒 |
| 伤害帧 | 最前伸位置单帧判定 |
| 后摇 | 趴地硬直后自动起身(硬直时长可配置,期间可受击,建议与 E004 Skill02_End 相同逻辑) |
#### Skill02 — 酸液喷吐
| 字段 | 值 |
|------|-------------------------------------|
| 弹数 | 2 次(每次一团) |
| 弹道 | 抛物线,落点为玩家方向前方(建议有随机偏移) |
| 落地效果 | 酸液溅射粒子(策划决定是否留持续伤害区) |
#### 死亡生成幼蛭
| 字段 | 值 |
|--------|--------------------------|
| 触发时机 | Death 动画指定帧AnimationEvent |
| 生成数量 | 可配置(建议 24 只) |
| 生成位置 | 自身位置 ± 随机小偏移 |
### 技术备注
- Skill01 后摇(趴地)阶段建议关闭攻击碰撞盒、开放受击碰撞盒。
- Death_Pre 到 Death 为必须完整播放,不可被打断(无敌帧)。
- 幼蛭生成逻辑建议用 AnimationEvent 调用,避免时序问题。
- ⚠️ **待策划确认**E005 肥蛭是否有专用 Flip转身动画需求表未标注程序暂按"无 Flip使用 Sprite 直接翻转"处理。
### 快速参数表(策划待填写)
| 参数名 | 说明 | 参考值 |
|-------------------|-----------------------|-------|
| `maxHP` | 最大生命值 | — |
| `moveSpeed` | 移动速度 | — |
| `detectRange` | 感知距离 | — |
| `skill01Damage` | 撕咬伤害 | — |
| `skill01CD` | 撕咬冷却(秒) | — |
| `skill01StaggerDuration` | 撕咬后趴地硬直时长(秒)| — |
| `skill02Count` | 酸液弹数2次 | 2 |
| `skill02Damage` | 每次酸液伤害 | — |
| `skill02CD` | 酸液冷却(秒) | — |
| `spawnCount` | 死亡时生成幼蛭数量 | — |
---
## E006 讙
### 基本信息
| 字段 | 内容 |
|--------|--------------------------------------------------|
| 编号 | E006_Huan |
| 类别 | 小怪 |
| 行动方式 | 地面巡逻 + 跳跃突进攻击 |
| 核心机制 | 发现玩家后向前跳跃爪击;跳跃位移由程序控制,动画只做原地滞空攻击动作 |
### 状态机
```
[Idle] ──感知玩家──▶ [Skill](循环,每次抵达玩家位置后判断是否继续追击)
[Idle] ──巡逻计时──▶ [Move] ──到达边界/计时结束──▶ [Flip] ──▶ [Move / Idle]
[Skill] ──丢失目标──▶ [Idle]
[任意状态] ──HP归零──▶ [Death]
```
### 状态列表
| 状态 | 动画名 | 类型 | 说明 |
|------|-------|------|------------------------------------------------------|
| 待机 | Idle | 循环 | 静止呼吸 |
| 巡逻 | Move | 循环 | 慢步巡逻 |
| 转身 | Flip | 单次 | 转向衔接 |
| 跳跃爪击 | Skill | 循环 | 动画做原地起跳 + 滞空爪击动作;程序负责在起跳时给予水平方向速度(向玩家方向冲刺) |
| 死亡 | Death | 单次 | 四肢瘫软倒地 |
### AI 行为
```
感知条件:视线检测(正面范围扇形)
├── 未感知 → Move 巡逻 / Idle 间歇站立
└── 感知玩家
├── 进入 Skill起跳前摇帧触发水平速度程序施加冲量
├── 滞空到达玩家附近或落地 → 造成伤害判定
└── 落地后:
├── 玩家仍在感知范围 → 等待 [attackInterval]秒 → 再次 Skill
└── 玩家离开范围 → 回到 Idle
⚠️ 落地后无专用着地动画(需求表未标注),程序直接切回 Idle 或 Move
```
### 技能规格
| 技能 | 触发条件 | 伤害类型 | 攻击范围 | 备注 |
|--------|----------|--------|------------------|-------------------------------------------|
| 跳跃爪击 | 感知玩家 | 瞬时伤害 | 爪部碰撞盒(滞空期间开启) | 动画仅原地,程序在动画起跳帧给 Rigidbody 施加水平冲量 |
### 技术备注
- 跳跃时机动画起跳帧AnimationEvent触发程序施加水平 + 垂直速度。
- 攻击碰撞盒仅在滞空爪击关键帧区间内开启。
- 死亡后尸体消散由程序控制(淡出/粒子),动画仅播放倒地。
- 多只讙建议使用同一 ScriptableObject 共享 AI 参数。
### 快速参数表(策划待填写)
| 参数名 | 说明 | 参考值 |
|------------------|--------------------------|-------|
| `maxHP` | 最大生命值 | — |
| `moveSpeed` | 巡逻速度 | — |
| `detectRange` | 感知距离(正面扇形半径) | — |
| `jumpForceX` | 起跳水平冲量 | — |
| `jumpForceY` | 起跳垂直冲量 | — |
| `attackDamage` | 爪击伤害值 | — |
| `attackInterval` | 落地到下次起跳的间隔(秒) | — |
---
## 通用开发规范
1. **状态机实现**:建议使用 `BaseGames` 框架中现有的状态机组件(参考 `BaseGames.Enemies.AI`)。
2. **伤害判定**:所有技能攻击碰撞盒统一通过 `HitboxComponent` 管理,开关由动画事件(`AnimationEvent`)驱动。
3. **AI 参数配置**:感知范围、速度、技能 CD、伤害值均放入对应 `EnemyData ScriptableObject`,禁止硬编码。
4. **死亡流程**HP ≤ 0 后禁用 AI 与移动,播放 Death 动画,动画结束后由对象池回收(或销毁)。
5. **特效时机**:粒子特效(溅液、酸液落点等)统一通过 `AnimationEvent` 调用 `VFXManager.Play(key)`
6. **受击处理**:本需求表中所有小怪均**无专用受击动画**(需求表未定义)。受击反馈统一使用:
- 程序层:短暂无敌帧 + 闪烁Hit Flash
- 音效层通用受击音效AudioManager 播放)
- 不打断当前动画;如需特定怪专用受击动作,请策划单独补充
7. **动画Clip命名 vs AI状态命名**:部分敌人的 AI 逻辑状态标识符与 Animator Clip 名称不同(如 E001 草蛭的 `Idle_Disguise` 状态对应 Clip 名 `Idle`),各角色章节的"状态列表"表格已分列"AI状态标识符"和"动画Clip名"两列,请以该表格为准实现,避免混淆。