实现 英雄不在动一个x点,和 伤害队列显示

This commit is contained in:
2025-02-07 15:36:25 +08:00
parent 56b365cbe7
commit f5fe35d36b
2 changed files with 108 additions and 16 deletions

View File

@@ -108,6 +108,15 @@ export class HeroViewComp extends CCComp {
ice_cd: number = 0; //冰冻倒计时
dir_y:number = 0;
speek_time:number = 0;
is_stop_temp:boolean = false;i
private damageQueue: Array<{
damage: number,
isCrit: boolean,
delay: number
}> = [];
private isProcessingDamage: boolean = false;
private damageInterval: number = 0.2; // 伤害数字显示间隔
onLoad() {
this.as = this.getComponent(HeroSpine);
@@ -147,6 +156,8 @@ export class HeroViewComp extends CCComp {
this.at += dt;
this.in_stop(dt);
// 处理伤害队列
this.processDamageQueue();
}
get isActive() {
return this.ent.has(HeroViewComp) && this.node?.isValid;
@@ -357,20 +368,41 @@ export class HeroViewComp extends CCComp {
/** 显示伤害数字 */
showDamage(damage: number, isCrit: boolean) {
this.BUFFCOMP.in_atked()
// this.as.atked();
this.damageQueue.push({
damage,
isCrit,
delay: this.damageInterval
});
}
/** 处理伤害队列 */
private processDamageQueue() {
if (this.isProcessingDamage || this.damageQueue.length === 0) return;
this.isProcessingDamage = true;
const damageInfo = this.damageQueue.shift()!;
this.showDamageImmediate(damageInfo.damage, damageInfo.isCrit);
// 设置延时处理下一个伤害
this.scheduleOnce(() => {
this.isProcessingDamage = false;
}, this.damageInterval);
}
/** 立即显示伤害效果 */
private showDamageImmediate(damage: number, isCrit: boolean) {
this.BUFFCOMP.in_atked();
this.atked_count++;
this.exp_add(this.uaexp)
this.power_add(this.uapw)
if(isCrit){
this.BUFFCOMP.tooltip(4,damage.toFixed(0),damage)
console.log("暴击伤害:"+damage)
}else{
this.BUFFCOMP.tooltip(1,damage.toFixed(0),damage)
console.log("普通伤害:"+damage)
this.exp_add(this.uaexp);
this.power_add(this.uapw);
if (isCrit) {
this.BUFFCOMP.tooltip(4, damage.toFixed(0), damage);
console.log("暴击伤害:" + damage);
} else {
this.BUFFCOMP.tooltip(1, damage.toFixed(0), damage);
console.log("普通伤害:" + damage);
}
}
}