refactor(hero): 优化护盾系统日志与显示逻辑

1. 新增多处护盾相关调试日志,方便追踪护盾数值变化
2. 重构HeroAttrsComp的add_shield方法,统一日志输出格式
3. 重写HeroTopBarComp的护盾显示逻辑,改为直接显示数值而非按上限比例
4. 为HeroViewComp新增护盾特效管理,实现护盾状态自动显隐
5. 清理hk1.prefab中冗余的预制体覆盖配置
This commit is contained in:
panFD
2026-09-03 23:53:37 +08:00
parent a41ff479da
commit 0a3efafbd5
6 changed files with 85 additions and 206 deletions

View File

@@ -518,14 +518,16 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpda
}
private absorbShield(TAttrsComp: HeroAttrsComp, damage: number): { remainingDamage: number, absorbedDamage: number } {
mLogger.log(this.debugMode, 'HeroAtkSystem', `absorbShield: ${TAttrsComp.hero_name}, shield=${TAttrsComp.shield}, damage=${damage}`);
if (TAttrsComp.shield <= 0) {
mLogger.log(this.debugMode, 'HeroAtkSystem', " 护盾值小于等于0,无法吸收伤害");
mLogger.log(this.debugMode, 'HeroAtkSystem', `absorbShield: shield <= 0, no absorb`);
return { remainingDamage: damage, absorbedDamage: 0 };
}
const absorbed = Math.min(TAttrsComp.shield, damage);
const oldShield = TAttrsComp.shield;
TAttrsComp.shield = Math.max(0, TAttrsComp.shield - absorbed);
TAttrsComp.dirty_shield = true;
mLogger.log(this.debugMode, 'HeroAtkSystem', ` 护盾减免 ${absorbed.toFixed(1)} 点伤害,剩余护盾 ${TAttrsComp.shield.toFixed(1)}`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `absorbShield: ${TAttrsComp.hero_name}, absorbed=${absorbed}, shield ${Math.floor(oldShield)} -> ${Math.floor(TAttrsComp.shield)}, dirty_shield=true`);
return { remainingDamage: damage - absorbed, absorbedDamage: absorbed };
}