feat(enemy): 嘲风迁移到新轨——能力资产 + 对象树 + 开战触发
删 5 个空 BossSkillSO,用向导重建 6 个 EnemyAbilitySO(含入场演出)。 预制体经放置工具重新产出:EnemyAiBrain(_definitionId=ChaoFeng) + BossPhaseAbilityGate + 6 个能力组件,不再有 BossSkillExecutor。 TestRoomA 加开战触发区。三件自检 0 error,EditMode 260/260。 首次真正跑通两条脚手架,暴露并修掉三个它们的缺陷: 1. 放置工具漏挂 EnemyLocomotion(PlaceChaoFeng 及其余 7 个敌人放置入口)。 EnemyBase.Awake 找不到它即报错且 Locomotion 为 null, AiStateFragments.ApplyLocomotion 直接 NRE、AiRuntime 构造失败—— Boss 建不出决策层,完全不动。已在所有敌人放置入口补齐。 2. 向导把空中阶段的 wind_stone 建成 requiresGrounded=true(SO 默认值)。 Boss 浮空后 IsGrounded 恒 false,选招器把它滤掉,空中阶段站着不打。 能力定义表加 grounded 列,阶段 1 的招显式置 false。 3. BossPhaseAbilityGate.ApplyPhase 只在 EnterPhase 与 OnSpawn 调用, 直接摆场景里的 Boss 两条路径都不走,开局后续阶段的招仍在候选池里。 BossBase.Start 补一次初始阶段应用。 另:Phase1_Tornado_HitBox 确认零消费者(龙卷判定随弹体走), 从放置工具删除其创建与伤害源绑定; EnemyBrainContext.UseAbility 对解析不到的能力 id 改为 LogError, 不再静默返回 false(CLAUDE.md 第 6 条); 新增 PlaceBossFightTrigger 脚手架(此前无对应创建入口,属裸建)。 播放模式实测状态序列(TestRoomA,玩家走进触发区): Wait →(Engaged) Intro → Ground⇄GroundAttack →(hp<50%) PhaseTransition → Air⇄AirAttack,浮空生效,阶段门按阶段换池,全程 0 报错。 动画 Clip 未接入,PlayClipAbility 空 clip 立即完成,故只验证了状态流转, 判定时序待美术接入后再校。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,32 +9,29 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: de92221c7c3fb4a42a7cd122a8f97632, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: fc81345eb5294d643b4242eac215c5fc, type: 3}
|
||||
m_Name: ABL_ChaoFeng_Boomerang
|
||||
m_EditorClassIdentifier:
|
||||
skillId: boomerang
|
||||
displayName: Boomerang
|
||||
designNote:
|
||||
category: 0
|
||||
skillType: 0
|
||||
availablePhaseIndices: 00000000
|
||||
attackPatterns: []
|
||||
vulnerabilityWindows: []
|
||||
interactionTags: 0
|
||||
sequenceOnHit: {fileID: 0}
|
||||
sequenceOnMiss: {fileID: 0}
|
||||
counterResponses: []
|
||||
arenaEvents: []
|
||||
resourceCost:
|
||||
resourceId:
|
||||
cost: 0
|
||||
minRequired: 0
|
||||
buildsRage: 0
|
||||
poiseWindow:
|
||||
Level: 0
|
||||
NormalizedStart: 0
|
||||
NormalizedEnd: 0
|
||||
skillAnimation:
|
||||
abilityId: boomerang
|
||||
designNote: "\u9636\u6BB5 0 \u62DB\u5F0F\uFF1B\u9636\u6BB5\u53EF\u7528\u6027\u7531
|
||||
BossPhaseAbilityGate \u914D\u7F6E"
|
||||
attackSequence: []
|
||||
cooldown: 4
|
||||
telegraphVfxKey:
|
||||
telegraphDuration: 0
|
||||
interruptOnHurt: 1
|
||||
interruptOnStagger: 1
|
||||
preferredMinRange: 0
|
||||
preferredMaxRange: 5
|
||||
requiresLineOfSight: 1
|
||||
requiresGrounded: 1
|
||||
exclusionGroup:
|
||||
priority: 0
|
||||
category: 1
|
||||
weight: 1
|
||||
rangeRadius: 9
|
||||
rangeOffset: {x: 0, y: 0}
|
||||
clip:
|
||||
_FadeDuration: 0.25
|
||||
_Speed: 1
|
||||
_Events:
|
||||
@@ -43,8 +40,6 @@ MonoBehaviour:
|
||||
_Names: []
|
||||
_Clip: {fileID: 0}
|
||||
_NormalizedStartTime: NaN
|
||||
cooldown: 0
|
||||
weight: 1
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
|
||||
@@ -9,42 +9,25 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: de92221c7c3fb4a42a7cd122a8f97632, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 9050afa76362dff469c64fbb48c9ff8d, type: 3}
|
||||
m_Name: ABL_ChaoFeng_FanCombo
|
||||
m_EditorClassIdentifier:
|
||||
skillId: fan_combo
|
||||
displayName: FanCombo
|
||||
designNote:
|
||||
category: 0
|
||||
skillType: 0
|
||||
availablePhaseIndices: 00000000
|
||||
attackPatterns: []
|
||||
vulnerabilityWindows: []
|
||||
interactionTags: 0
|
||||
sequenceOnHit: {fileID: 0}
|
||||
sequenceOnMiss: {fileID: 0}
|
||||
counterResponses: []
|
||||
arenaEvents: []
|
||||
resourceCost:
|
||||
resourceId:
|
||||
cost: 0
|
||||
minRequired: 0
|
||||
buildsRage: 0
|
||||
poiseWindow:
|
||||
Level: 0
|
||||
NormalizedStart: 0
|
||||
NormalizedEnd: 0
|
||||
skillAnimation:
|
||||
_FadeDuration: 0.25
|
||||
_Speed: 1
|
||||
_Events:
|
||||
_NormalizedTimes: []
|
||||
_Callbacks: []
|
||||
_Names: []
|
||||
_Clip: {fileID: 0}
|
||||
_NormalizedStartTime: NaN
|
||||
cooldown: 0
|
||||
abilityId: fan_combo
|
||||
designNote: "\u9636\u6BB5 0 \u62DB\u5F0F\uFF1B\u9636\u6BB5\u53EF\u7528\u6027\u7531
|
||||
BossPhaseAbilityGate \u914D\u7F6E"
|
||||
attackSequence: []
|
||||
cooldown: 2.5
|
||||
telegraphVfxKey:
|
||||
telegraphDuration: 0
|
||||
interruptOnHurt: 1
|
||||
interruptOnStagger: 1
|
||||
preferredMinRange: 0
|
||||
preferredMaxRange: 5
|
||||
requiresLineOfSight: 1
|
||||
requiresGrounded: 1
|
||||
exclusionGroup:
|
||||
priority: 0
|
||||
category: 1
|
||||
weight: 1.5
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
rangeRadius: 2.5
|
||||
rangeOffset: {x: 0, y: 0}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fc81345eb5294d643b4242eac215c5fc, type: 3}
|
||||
m_Name: ABL_ChaoFeng_Intro
|
||||
m_EditorClassIdentifier:
|
||||
abilityId: chaofeng_intro
|
||||
designNote: "\u5165\u573A\u6F14\u51FA\uFF0C\u4E0D\u8FDB\u9009\u62DB\u6C60"
|
||||
attackSequence: []
|
||||
cooldown: 0
|
||||
telegraphVfxKey:
|
||||
telegraphDuration: 0
|
||||
interruptOnHurt: 1
|
||||
interruptOnStagger: 1
|
||||
preferredMinRange: 0
|
||||
preferredMaxRange: 5
|
||||
requiresLineOfSight: 1
|
||||
requiresGrounded: 1
|
||||
exclusionGroup:
|
||||
priority: 0
|
||||
category: 0
|
||||
weight: 0
|
||||
rangeRadius: 0
|
||||
rangeOffset: {x: 0, y: 0}
|
||||
clip:
|
||||
_FadeDuration: 0.25
|
||||
_Speed: 1
|
||||
_Events:
|
||||
_NormalizedTimes: []
|
||||
_Callbacks: []
|
||||
_Names: []
|
||||
_Clip: {fileID: 0}
|
||||
_NormalizedStartTime: NaN
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eddeb2d9e64934d4eab9acf5efd8902e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -9,32 +9,29 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: de92221c7c3fb4a42a7cd122a8f97632, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: fc81345eb5294d643b4242eac215c5fc, type: 3}
|
||||
m_Name: ABL_ChaoFeng_TornadoLarge
|
||||
m_EditorClassIdentifier:
|
||||
skillId: tornado_large
|
||||
displayName: TornadoLarge
|
||||
designNote:
|
||||
category: 0
|
||||
skillType: 0
|
||||
availablePhaseIndices: 00000000
|
||||
attackPatterns: []
|
||||
vulnerabilityWindows: []
|
||||
interactionTags: 0
|
||||
sequenceOnHit: {fileID: 0}
|
||||
sequenceOnMiss: {fileID: 0}
|
||||
counterResponses: []
|
||||
arenaEvents: []
|
||||
resourceCost:
|
||||
resourceId:
|
||||
cost: 0
|
||||
minRequired: 0
|
||||
buildsRage: 0
|
||||
poiseWindow:
|
||||
Level: 0
|
||||
NormalizedStart: 0
|
||||
NormalizedEnd: 0
|
||||
skillAnimation:
|
||||
abilityId: tornado_large
|
||||
designNote: "\u9636\u6BB5 0 \u62DB\u5F0F\uFF1B\u9636\u6BB5\u53EF\u7528\u6027\u7531
|
||||
BossPhaseAbilityGate \u914D\u7F6E"
|
||||
attackSequence: []
|
||||
cooldown: 6
|
||||
telegraphVfxKey:
|
||||
telegraphDuration: 0
|
||||
interruptOnHurt: 1
|
||||
interruptOnStagger: 1
|
||||
preferredMinRange: 0
|
||||
preferredMaxRange: 5
|
||||
requiresLineOfSight: 1
|
||||
requiresGrounded: 1
|
||||
exclusionGroup:
|
||||
priority: 0
|
||||
category: 1
|
||||
weight: 0.8
|
||||
rangeRadius: 12
|
||||
rangeOffset: {x: 0, y: 0}
|
||||
clip:
|
||||
_FadeDuration: 0.25
|
||||
_Speed: 1
|
||||
_Events:
|
||||
@@ -43,8 +40,6 @@ MonoBehaviour:
|
||||
_Names: []
|
||||
_Clip: {fileID: 0}
|
||||
_NormalizedStartTime: NaN
|
||||
cooldown: 0
|
||||
weight: 0.8
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
|
||||
@@ -9,32 +9,29 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: de92221c7c3fb4a42a7cd122a8f97632, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: fc81345eb5294d643b4242eac215c5fc, type: 3}
|
||||
m_Name: ABL_ChaoFeng_TornadoSmall
|
||||
m_EditorClassIdentifier:
|
||||
skillId: tornado_small
|
||||
displayName: TornadoSmall
|
||||
designNote:
|
||||
category: 0
|
||||
skillType: 0
|
||||
availablePhaseIndices: 00000000
|
||||
attackPatterns: []
|
||||
vulnerabilityWindows: []
|
||||
interactionTags: 0
|
||||
sequenceOnHit: {fileID: 0}
|
||||
sequenceOnMiss: {fileID: 0}
|
||||
counterResponses: []
|
||||
arenaEvents: []
|
||||
resourceCost:
|
||||
resourceId:
|
||||
cost: 0
|
||||
minRequired: 0
|
||||
buildsRage: 0
|
||||
poiseWindow:
|
||||
Level: 0
|
||||
NormalizedStart: 0
|
||||
NormalizedEnd: 0
|
||||
skillAnimation:
|
||||
abilityId: tornado_small
|
||||
designNote: "\u9636\u6BB5 0 \u62DB\u5F0F\uFF1B\u9636\u6BB5\u53EF\u7528\u6027\u7531
|
||||
BossPhaseAbilityGate \u914D\u7F6E"
|
||||
attackSequence: []
|
||||
cooldown: 3.5
|
||||
telegraphVfxKey:
|
||||
telegraphDuration: 0
|
||||
interruptOnHurt: 1
|
||||
interruptOnStagger: 1
|
||||
preferredMinRange: 0
|
||||
preferredMaxRange: 5
|
||||
requiresLineOfSight: 1
|
||||
requiresGrounded: 1
|
||||
exclusionGroup:
|
||||
priority: 0
|
||||
category: 1
|
||||
weight: 1.2
|
||||
rangeRadius: 8
|
||||
rangeOffset: {x: 0, y: 0}
|
||||
clip:
|
||||
_FadeDuration: 0.25
|
||||
_Speed: 1
|
||||
_Events:
|
||||
@@ -43,8 +40,6 @@ MonoBehaviour:
|
||||
_Names: []
|
||||
_Clip: {fileID: 0}
|
||||
_NormalizedStartTime: NaN
|
||||
cooldown: 0
|
||||
weight: 1.2
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
|
||||
@@ -9,32 +9,29 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: de92221c7c3fb4a42a7cd122a8f97632, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: fc81345eb5294d643b4242eac215c5fc, type: 3}
|
||||
m_Name: ABL_ChaoFeng_WindStone
|
||||
m_EditorClassIdentifier:
|
||||
skillId: wind_stone
|
||||
displayName: WindStone
|
||||
designNote:
|
||||
category: 0
|
||||
skillType: 0
|
||||
availablePhaseIndices: 01000000
|
||||
attackPatterns: []
|
||||
vulnerabilityWindows: []
|
||||
interactionTags: 0
|
||||
sequenceOnHit: {fileID: 0}
|
||||
sequenceOnMiss: {fileID: 0}
|
||||
counterResponses: []
|
||||
arenaEvents: []
|
||||
resourceCost:
|
||||
resourceId:
|
||||
cost: 0
|
||||
minRequired: 0
|
||||
buildsRage: 0
|
||||
poiseWindow:
|
||||
Level: 0
|
||||
NormalizedStart: 0
|
||||
NormalizedEnd: 0
|
||||
skillAnimation:
|
||||
abilityId: wind_stone
|
||||
designNote: "\u9636\u6BB5 1 \u62DB\u5F0F\uFF1B\u9636\u6BB5\u53EF\u7528\u6027\u7531
|
||||
BossPhaseAbilityGate \u914D\u7F6E"
|
||||
attackSequence: []
|
||||
cooldown: 3
|
||||
telegraphVfxKey:
|
||||
telegraphDuration: 0
|
||||
interruptOnHurt: 1
|
||||
interruptOnStagger: 1
|
||||
preferredMinRange: 0
|
||||
preferredMaxRange: 5
|
||||
requiresLineOfSight: 1
|
||||
requiresGrounded: 0
|
||||
exclusionGroup:
|
||||
priority: 0
|
||||
category: 1
|
||||
weight: 1
|
||||
rangeRadius: 12
|
||||
rangeOffset: {x: 0, y: 0}
|
||||
clip:
|
||||
_FadeDuration: 0.25
|
||||
_Speed: 1
|
||||
_Events:
|
||||
@@ -43,8 +40,6 @@ MonoBehaviour:
|
||||
_Names: []
|
||||
_Clip: {fileID: 0}
|
||||
_NormalizedStartTime: NaN
|
||||
cooldown: 0
|
||||
weight: 1
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
|
||||
Reference in New Issue
Block a user