Files
zeling_v2/Docs/DesignSpec/06_FormSystem.md
2026-05-08 11:04:00 +08:00

8.7 KiB
Raw Permalink Blame History

06 · 形态系统规范

所属文档集 ← 返回索引
摘要:三形态(天魂/地魂/命魂)的数据模型、切换契约、武器适配与技能体系。


目录

  1. 形态设计目标
  2. 形态数据模型
  3. 形态切换契约
  4. 三形态规格表
  5. 技能体系
  6. 武器与形态联动
  7. 形态配置参数

1. 形态设计目标

目标 说明
风格差异化 三形态提供截然不同的战斗体验,不仅仅是皮肤替换
情境适应 不同区域/敌人类型鼓励不同形态,但不强制
无缝切换 切换不中断当前动作,下次输入时生效
可扩展 新增形态只需新增数据,不需要修改现有逻辑

2. 形态数据模型

DataModel FormData {
    formId          : ID                // 形态唯一标识(如 "SkyForm"
    displayName     : String            // 显示名称("天魂"
    description     : String            // 一句话描述
    accentColor     : Color             // HUD/特效色调
    ──────────────────────────────────
    defaultWeapon   : Ref<WeaponData>   // 默认武器(连击动画+伤害来源+判定尺寸)
    soulSkill       : Ref<SkillData>    // 魂技能(消耗灵力)
    spiritSkill1    : Ref<SkillData>    // 魄技能 1消耗魄元
    spiritSkill2    : Ref<SkillData>    // 魄技能 2消耗魄元
    ──────────────────────────────────
    switchAnimation : Optional<AnimationID>  // 切换前摇动画(无则立即切换)
    unlockCondition : Optional<Ref<AbilityData>> // 解锁条件null=初始可用)
}
DataModel WeaponData {
    weaponId        : ID
    formId          : ID                // 归属形态
    ──────────────────────────────────
    attack1Anim     : AnimationID       // 第一击动画
    attack2Anim     : AnimationID       // 第二击动画
    attack3Anim     : AnimationID       // 第三击动画
    airAttackAnim   : AnimationID
    upAttackAnim    : AnimationID
    downAttackAnim  : AnimationID
    ──────────────────────────────────
    hitBoxConfig    : List<HitBoxSpec>  // 各攻击段的判定区域规格
    damageMultipliers: Map<AttackType, Number>  // 各攻击段伤害倍率
}

3. 形态切换契约

3.1 切换输入映射

输入槽 默认形态 说明
槽位 0 天魂SkyForm 键位 1 / 手柄方向键左
槽位 1 地魂EarthForm 键位 2 / 手柄方向键下
槽位 2 命魂DeathForm 键位 3 / 手柄方向键右

设计决策:使用有序槽位而非形态枚举
原因:未来新增第四形态时,只需增加新输入槽和新 FormData不改变现有逻辑

3.2 切换时机

玩家按下形态切换键
  → 目标形态 = 对应槽位的 FormData

  目标形态 == 当前形态?
  ├─ 是 → 忽略输入
  └─ 否 → 

    目标形态有切换前摇动画?
    ├─ 是 → 播放前摇,前摇完成后切换
    └─ 否 → **立即** 更新 CurrentForm不中断当前动作

    → 发出 OnFormChanged 事件(传入新 FormData
    → WeaponSlot 接收事件,自动切换为新形态的默认武器
    → 下次攻击/技能输入时,使用新形态的动画和参数

3.3 切换的"无缝"原则

  • 切换本身无前摇(默认配置下)
  • 当前动作(如攻击、冲刺)不被打断
  • 下一次攻击输入才体现新形态效果
  • 技能(魂技能/魄技能)绑定于形态,切换后技能槽内容随之改变

4. 三形态规格表

4.1 天魂形态SkyForm

属性 规格
战斗风格 轻快连击,空中机动性强
攻击判定 较小范围,近身贴脸
连击特点 第三击向上抛起敌人
魂技能 天光斩:前冲斩击,穿透多个敌人,灵力消耗 100
魄技能 1 天翔步:瞬间向上跳跃(额外跳),魄元消耗 40
魄技能 2 灵鸟护体:短暂无敌 + 反伤护盾,魄元消耗 70
定位 灵活流,擅长空中平台战斗

4.2 地魂形态EarthForm

属性 规格
战斗风格 重击范围大,霸体强
攻击判定 较大范围,有前置停顿
连击特点 第三击震地,范围伤害
魂技能 大地震怒:跳起落下产生冲击波,灵力消耗 100
魄技能 1 岩甲护卫:护盾层(吸收 X 点伤害),魄元消耗 50
魄技能 2 地裂踏:踏地减速附近敌人,魄元消耗 60
定位 坦克流,擅长对峙 Boss 和密集敌人

4.3 命魂形态DeathForm

属性 规格
战斗风格 中等速度,弹反增益显著
攻击判定 适中范围,攻击后有追加效果
连击特点 每击命中后留下诅咒标记,第三击引爆全部标记
魂技能 命魂索链:召唤锁链束缚最近敌人,灵力消耗 100
魄技能 1 命魂反噬:下次弹反触发额外爆炸伤害,魄元消耗 45
魄技能 2 命域领域:短暂降低附近敌人攻击力,魄元消耗 65
定位 弹反流,弹反策略强化,适合精通玩家

5. 技能体系

5.1 技能数据模型

DataModel SkillData {
    skillId         : ID
    skillName       : String
    description     : String
    resourceType    : ResourceType          // SoulPower 或 SpiritPower
    resourceCost    : Integer               // 消耗量
    ──────────────────────────────────
    castAnimation   : AnimationID           // 前摇动画
    castDuration    : Duration              // 前摇时长
    effectDelay     : Duration              // 前摇结束后效果开始的延迟
    ──────────────────────────────────
    effectType      : SkillEffectType
    effectParams    : Map<String, Number>   // 效果参数(因技能类型而异)
    ──────────────────────────────────
    canCastAirborne : Boolean               // 是否可在空中施放
    interruptible   : Boolean               // 前摇是否可被打断(冲刺/受伤仍可打断)
}

5.2 技能效果类型

类型 说明 典型参数
Projectile 发射弹射物 speed, damage, piercing
Melee 近战范围攻击 radius, damage, knockback
Shield 护盾效果 absorbAmount, duration
Buff 正面增益 buffType, duration, magnitude
Debuff 负面施加 debuffType, duration, radius
Summon 召唤实体 entityId, duration, count
Mobility 移动型技能 distance, direction, invincible

5.3 资源消耗规则

资源类型 消耗时机 失败处理
灵力 技能执行前检查,通过则立即扣除 不足时技能键无响应
魄元 技能执行前检查,通过则立即扣除 不足时技能键无响应

6. 武器与形态联动

6.1 武器切换流程

OnFormChanged 事件触发
  → WeaponSlot 更新为新形态的 defaultWeapon
  → CombatHandler 刷新以下内容:
       ├─ 当前连击段的动画片段
       ├─ HitArea 尺寸与偏移
       ├─ DamagePacket 中的伤害倍率来源
       └─ 重置连击计数器ComboState → None

6.2 护符武器覆盖

特定护符可覆盖某形态的默认武器(只改变该形态):

  • 护符持有 WeaponData 引用
  • 装备时:对应槽位的 FormData.defaultWeapon 临时被护符武器替代
  • 卸装时:恢复原 FormData.defaultWeapon

7. 形态配置参数

参数 说明
三形态 FormData 见第 4 节规格表
各形态武器 HitBox 尺寸 在各 WeaponData 中配置
技能消耗量 在各 SkillData 中配置
技能前摇时长 在各 SkillData 中配置

扩展原则:新增形态时,只需:

  1. 创建新的 FormData(含武器和技能引用)
  2. 将其加入形态配置列表的新槽位
  3. 为新槽位绑定输入键位

无需修改任何现有系统逻辑。