fix(英雄视图): 修复血条进度计算并优化显示逻辑

- 添加对 hp_max 为 0 的防护,避免除零错误
- 使用 clamp 确保进度值在 0 到 1 之间
- 仅在血条减少时激活顶栏和播放抖动动画
- 血条增加时自动降低顶栏透明度
This commit is contained in:
panw
2026-03-19 09:22:41 +08:00
parent 1522e93585
commit ae39b8e861

View File

@@ -188,14 +188,19 @@ export class HeroViewComp extends CCComp {
let hp_max=this.model.hp_max;
// mLogger.log(this.debugMode, 'HeroViewComp', "hp_show",hp,hp_max)
let targetProgress = hp / hp_max;
let targetProgress = hp_max > 0 ? hp / hp_max : 0;
targetProgress = clamp(targetProgress, 0, 1);
let hpNode = this.top_node.getChildByName("hp");
let hpProgressBar = hpNode.getComponent(ProgressBar);
const prevProgress = hpProgressBar.progress;
if (targetProgress < hpProgressBar.progress) {
this.activateTopBar();
this.playHpBarShake();
hpProgressBar.progress = targetProgress;
}
hpProgressBar.progress = targetProgress;
if (targetProgress > prevProgress) {
this.setTopBarOpacity(false);
}
}