实现 英雄不在动一个x点,和 伤害队列显示
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user