feat(monster&spawn): 新增飞行怪物支持,重构怪物移动与刷怪系统

抽离MonMoveComp拆分怪物移动逻辑,让MoveComp仅负责英雄移动
新增Fly和FlyBoss怪物类型,配置三层飞行轨道支持空中怪物
重写波次刷怪逻辑,移除固定5槽限制,按轨道自由排布怪物
将怪物生成上限与恢复阈值从5/3调整为50/30
优化渲染排序逻辑,为飞行怪添加持续浮动动画
移除跨波怪物属性继承,波次切换时自动清理残留怪物
This commit is contained in:
walkpan
2026-05-12 12:23:37 +08:00
parent 92db480baf
commit e7075004fe
7 changed files with 390 additions and 264 deletions

View File

@@ -68,6 +68,10 @@ export const MonType = {
MeleeBoss: 3,
/** 远程 Boss */
LongBoss: 4,
/** 飞行普通怪 */
Fly: 5,
/** 飞行 Boss */
FlyBoss: 6,
}
// ======================== 怪物 UUID 池 ========================
@@ -79,6 +83,8 @@ export const MonList = {
[MonType.Support]: [6005], // 辅助怪池
[MonType.MeleeBoss]:[6006,6105], // 近战 Boss 池
[MonType.LongBoss]:[6104], // 远程 Boss 池
[MonType.Fly]: [6004, 6005], // 飞行怪池 (占位)
[MonType.FlyBoss]: [6104], // 飞行 Boss 池 (占位)
}
// ======================== 全局刷怪强度系数 ========================
@@ -98,23 +104,24 @@ export interface IWaveSlot {
type: number;
/** 该类型的怪物数量 */
count: number;
/** (可选)每个怪物占用几个槽位,默认 1大型 Boss 设为 2 */
/** (可选)每个怪物占用几个槽位,默认 1大型 Boss 设为 2 (新方案中主要用作标识Boss) */
slotsPerMon?: number;
/** 可选飞行层0=地面, 1=第一层空中(+120), 2=第二层空中(+240)。默认地面为 0Fly/FlyBoss 类型默认 1 */
flyLane?: 0 | 1 | 2;
}
// =========================================================================================
// 【每波怪物占位与刷怪配置说明】
//
// 字段说明:
// - type: 怪物类型 (参考 MonType如近战 0远程 1Boss 3 等)。
// - type: 怪物类型 (参考 MonType如近战 0远程 1Boss 3,飞行 5 等)。
// - count: 该类型的怪在场上同时存在几个。
// - slotsPerMon: (可选) 单个怪物体积占用几个占位坑,默认为 1
// 大型 Boss 默认设为 3它会跨占位降落
// - slotsPerMon: (可选) Boss 占位,旧方案占用多格,现作为标识
// - flyLane: (可选) 飞行层0=地面1=空中1层2=空中2层
//
// 【规则约束】:
// - 全场固定 5 个槽位(索引 0-4
// - Boss 默认占用 3 个位置,只要有连续 3 格即可
// - 每波怪物总槽位占用不能超过 5。
// - 突破 5 槽限制,怪物按刷怪顺序依次从 X=280 开始向右(每隔 50排布
// - Boss 和普通怪占据一个相同的 X 锚点,但视觉体积更大
// =========================================================================================
/** 各波次的怪物占位配置key = 波次编号) */