小怪设计 — 程序开发文档 01
依据《小怪设计-动作需求表-01》整理,供程序端实现参考。
包含:状态机、AI 行为逻辑、技能规格、特殊机制说明。
目录
E001 草蛭
基本信息
| 字段 |
内容 |
| 编号 |
E001_CaoZhi |
| 类别 |
小怪 |
| 行动方式 |
地面爬行 |
| 核心机制 |
伪装待机 → 发现玩家 → 追击攻击;具备侦测范围触发开关 |
状态机
状态列表
| 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 行为
技能规格
| 技能 |
触发条件 |
伤害类型 |
攻击范围 |
备注 |
| 追击啃咬 |
进入感知范围 |
接触伤害 |
自身碰撞体(Collider) |
Skill_Loop 期间碰撞盒始终开启;无弹道,纯移动追击 |
技术备注
- Idle 伪装期间建议关闭 NavAgent / 移动组件,仅保留感知触发器。
- 追击速度、感知范围、伪装抽搐间隔建议通过 ScriptableObject 配置。
- 死亡无专用受击-死亡过渡动画,HP≤0 直接播放 Death。
快速参数表(策划待填写)
| 参数名 |
说明 |
参考值 |
maxHP |
最大生命值 |
— |
moveSpeed |
巡逻速度 |
— |
chaseSpeed |
追击速度(Skill_Loop 期间) |
— |
detectRadius |
感知触发半径 |
— |
contactDamage |
接触伤害值 |
— |
E002 簧蛭
基本信息
| 字段 |
内容 |
| 编号 |
E002_HuangZhi |
| 类别 |
小怪 |
| 行动方式 |
固定位置,无法移动,属于陷阱型 |
| 核心机制 |
藏于天花板 → 玩家经过检测区 → 钻出啃咬 → 悬挂可受击窗口 → 缩回 |
状态机
状态列表
| 状态 |
动画名 |
类型 |
说明 |
| 隐藏待机 |
Idle |
循环 |
岩壁上仅露出头部剪影,间歇蠕动 |
| 攻击发生 |
Skill_Start |
单次 |
从岩壁钻出,身躯拉伸甩动,造成伤害 |
| 悬挂可受击 |
Skill_Loop |
循环 |
身体悬挂岩壁轻微晃动;此阶段碰撞盒开放,可被玩家攻击 |
| 缩回 |
Skill_End |
单次 |
缩回岩壁,过渡到 Idle |
| 死亡 |
Death |
单次 |
爆体溅出黏液,留下短截身体悬挂,关闭碰撞 |
AI 行为
技能规格
| 技能 |
触发条件 |
伤害类型 |
攻击范围 |
攻击次数 |
备注 |
| 钻出啃咬 |
玩家进入正下方感知区 |
瞬时伤害 |
Skill_Start 期间碰撞盒 |
1 次 |
悬挂期无攻击判定,仅可受击 |
技术备注
- 固定于特定平台点位,不需要 NavAgent。
- Skill_Loop 期间:攻击碰撞盒关闭,受击碰撞盒开启(可被玩家攻击)。
- 悬挂时长、冷却时长建议 ScriptableObject 配置。
- 死亡后保留部分身体 Sprite(不完全消除),可用单独的静态 Sprite 替换。
快速参数表(策划待填写)
| 参数名 |
说明 |
参考值 |
maxHP |
最大生命值 |
— |
attackDamage |
钻出啃咬伤害值 |
— |
hangDuration |
Skill_Loop 悬挂时长(秒) |
— |
cooldownDuration |
缩回后进入下次攻击的冷却(秒) |
— |
detectWidth |
感知区水平宽度 |
— |
E003 幼蛭
基本信息
| 字段 |
内容 |
| 编号 |
E003_YouZhi |
| 类别 |
小怪 |
| 行动方式 |
天花板吸附 → 掉落地面 → 地面爬行 |
| 核心机制 |
两种出现方式:①场景预置于天花板,战斗触发后掉落;②由 E005 肥蛭死亡时 Spawn;极低生命值,一击即死 |
状态机
状态列表
| 状态 |
动画名 |
类型 |
说明 |
| 天花板待机 |
Idle |
循环 |
吸附岩壁剪影,间歇蠕动 |
| 掉落 |
Fall |
循环 |
旋转下落,直到落地触发 Move |
| 地面爬行 |
Move |
循环 |
缓慢爬行(速度为基础移动速度) |
| 快速追击 |
Skill |
循环 |
加速爬行追击(速度约 1.5× Move 速度),碰到玩家造成伤害 |
| 死亡 |
Death |
单次 |
溅出少量酸液,身体干瘪,一击即死 |
AI 行为
技能规格
| 技能 |
触发条件 |
伤害类型 |
攻击范围 |
备注 |
| 快速追击 |
感知玩家 |
接触伤害 |
自身碰撞体 |
一击即死(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 |
循环 |
呼吸待机,触手轻微蠕动 |
| 移动 |
Move |
循环 |
向玩家方向移动,调整攻击距离 |
| 转身 |
Flip |
单次 |
玩家绕至身后时触发 |
| 撕咬 |
Skill01 |
单次 |
近程,头部后蓄力后前突啃咬;前摇明显 |
| 头槌前摇 |
Skill02_Start |
单次 |
头部蜷缩成球蓄力 |
| 头槌循环 |
Skill02_Loop |
循环 |
反复砸地(单次砸地动作循环),可配置砸地次数 |
| 头槌结束 |
Skill02_End |
单次 |
喘息硬直,此阶段可受击,攻击不判定 |
| 酸液喷吐 |
Skill_03 |
单次 |
嘴部抖动后向上喷出多团酸液,以抛物线散落 |
| 死亡前挣扎 |
Death_Pre |
循环 |
HP 归零后触发,僵直挣扎;持续固定时间后衔接 Death |
| 死亡 |
Death |
单次 |
爆体,溅出黏液,消散 |
AI 行为
技能规格
Skill01 — 撕咬
| 字段 |
值 |
| 攻击类型 |
近程瞬时 |
| 攻击范围 |
头部前方碰撞盒(宽×高可配置) |
| 伤害帧 |
动作到达最前伸位置时判定(单帧) |
| 前摇 |
较大(动画帧数见动作需求表) |
| 硬直(玩家) |
策划配置 |
Skill02 — 头槌
| 字段 |
值 |
| 攻击类型 |
范围震地 |
| 伤害范围 |
砸地落点附近圆形/矩形区域(建议策划配置半径) |
| 砸地次数 |
可配置(建议 2–4 次) |
| 每次间隔 |
由 Skill02_Loop 动画帧率决定 |
| 硬直窗口 |
Skill02_End 阶段为硬直,期间关闭攻击盒,开放受击 |
Skill03 — 酸液喷吐
| 字段 |
值 |
| 攻击类型 |
远程抛物弹道 |
| 弹数 |
多颗(可配置,建议 3–5 颗) |
| 落点分布 |
以玩家当前位置为中心,向两侧随机偏移散布(建议策划配置范围) |
| 弹道 |
抛物线(设置初速度与重力系数即可) |
| 落地效果 |
酸液溅射粒子 + 落地持续伤害区(建议策划决定是否留存伤害区域) |
技术备注
- 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 |
循环 |
呼吸待机 |
| 移动 |
Move |
循环 |
肥硕扭动,移动速度较低 |
| 撕咬 |
Skill01 |
单次 |
近程前伸啃咬;攻击结束后有趴地硬直,再起身回 Idle |
| 酸液 |
Skill02 |
单次 |
连续两次吐出酸液团(逻辑上循环两次单次动画,或直接做循环动画) |
| 死亡前挣扎 |
Death_Pre |
循环 |
HP 归零后触发,肚子膨胀蠕动,表现有东西即将钻出 |
| 死亡 |
Death |
单次 |
肚子爆开,溅出酸液,同时 Spawn 幼蛭 |
AI 行为
技能规格
Skill01 — 撕咬
| 字段 |
值 |
| 攻击范围 |
头部前方碰撞盒 |
| 伤害帧 |
最前伸位置单帧判定 |
| 后摇 |
趴地硬直后自动起身(硬直时长可配置,期间可受击,建议与 E004 Skill02_End 相同逻辑) |
Skill02 — 酸液喷吐
| 字段 |
值 |
| 弹数 |
2 次(每次一团) |
| 弹道 |
抛物线,落点为玩家方向前方(建议有随机偏移) |
| 落地效果 |
酸液溅射粒子(策划决定是否留持续伤害区) |
死亡生成幼蛭
| 字段 |
值 |
| 触发时机 |
Death 动画指定帧(AnimationEvent) |
| 生成数量 |
可配置(建议 2–4 只) |
| 生成位置 |
自身位置 ± 随机小偏移 |
技术备注
- 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 |
循环 |
静止呼吸 |
| 巡逻 |
Move |
循环 |
慢步巡逻 |
| 转身 |
Flip |
单次 |
转向衔接 |
| 跳跃爪击 |
Skill |
循环 |
动画做原地起跳 + 滞空爪击动作;程序负责在起跳时给予水平方向速度(向玩家方向冲刺) |
| 死亡 |
Death |
单次 |
四肢瘫软倒地 |
AI 行为
技能规格
| 技能 |
触发条件 |
伤害类型 |
攻击范围 |
备注 |
| 跳跃爪击 |
感知玩家 |
瞬时伤害 |
爪部碰撞盒(滞空期间开启) |
动画仅原地,程序在动画起跳帧给 Rigidbody 施加水平冲量 |
技术备注
- 跳跃时机:动画起跳帧(AnimationEvent)触发程序施加水平 + 垂直速度。
- 攻击碰撞盒仅在滞空爪击关键帧区间内开启。
- 死亡后尸体消散由程序控制(淡出/粒子),动画仅播放倒地。
- 多只讙建议使用同一 ScriptableObject 共享 AI 参数。
快速参数表(策划待填写)
| 参数名 |
说明 |
参考值 |
maxHP |
最大生命值 |
— |
moveSpeed |
巡逻速度 |
— |
detectRange |
感知距离(正面扇形半径) |
— |
jumpForceX |
起跳水平冲量 |
— |
jumpForceY |
起跳垂直冲量 |
— |
attackDamage |
爪击伤害值 |
— |
attackInterval |
落地到下次起跳的间隔(秒) |
— |
通用开发规范
- 状态机实现:建议使用
BaseGames 框架中现有的状态机组件(参考 BaseGames.Enemies.AI)。
- 伤害判定:所有技能攻击碰撞盒统一通过
HitboxComponent 管理,开关由动画事件(AnimationEvent)驱动。
- AI 参数配置:感知范围、速度、技能 CD、伤害值均放入对应
EnemyData ScriptableObject,禁止硬编码。
- 死亡流程:HP ≤ 0 后禁用 AI 与移动,播放 Death 动画,动画结束后由对象池回收(或销毁)。
- 特效时机:粒子特效(溅液、酸液落点等)统一通过
AnimationEvent 调用 VFXManager.Play(key)。
- 受击处理:本需求表中所有小怪均无专用受击动画(需求表未定义)。受击反馈统一使用:
- 程序层:短暂无敌帧 + 闪烁(Hit Flash)
- 音效层:通用受击音效(AudioManager 播放)
- 不打断当前动画;如需特定怪专用受击动作,请策划单独补充
- 动画Clip命名 vs AI状态命名:部分敌人的 AI 逻辑状态标识符与 Animator Clip 名称不同(如 E001 草蛭的
Idle_Disguise 状态对应 Clip 名 Idle),各角色章节的"状态列表"表格已分列"AI状态标识符"和"动画Clip名"两列,请以该表格为准实现,避免混淆。