diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index 3bc47460..5bae1f9f 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -464,30 +464,34 @@ export class HeroViewComp extends CCComp { mLogger.warn(this.debugMode, 'HeroViewComp', "[HeroViewComp] realDead called but model is null, skipping"); return; } - // 根据阵营触发不同事件 - if(this.model.fac === FacSet.MON){ - - } - - if(this.model.fac === FacSet.HERO){ - // 将英雄移到玩家看不到的墓地 - this.node.setPosition(v3(-2000, -2000, 0)); - const collider = this.node.getComponent(Collider2D); - if (collider) { - collider.enabled = false; - } - // 隐藏UI - this.top_node.active = false; - } else { - // 🔥 方案B:治理性措施 - 在销毁实体前先禁用碰撞体,从源头减少"尸体"参与碰撞 - const collider = this.node.getComponent(Collider2D); - if (collider) { - collider.enabled = false; - } - - this.ent.destroy(); + + // 隐藏UI + this.top_node.active = false; + + // 在销毁实体前先禁用碰撞体,从源头减少"尸体"参与碰撞 + const collider = this.node.getComponent(Collider2D); + if (collider) { + collider.enabled = false; } + // 根据阵营决定飞出方向:英雄向左(负),怪物向右(正) + let isHero = this.model.fac === FacSet.HERO; + let dirX = isHero ? -800 : 800; + + // 死亡往后飞出屏幕动画 + tween(this.node) + .by(0.5, { position: v3(dirX, 700, 0), angle: isHero ? 360 : -360 }, { easing: "quadOut" }) + .call(() => { + this.node.angle = 0; // 重置角度 + if (isHero) { + // 将英雄移到玩家看不到的墓地,留待下回合上场 + this.node.setPosition(v3(-2000, -2000, 0)); + } else { + // 动画结束后销毁怪物实体 + this.ent.destroy(); + } + }) + .start(); } do_atked(damage:number,isCrit:boolean,s_uuid:number,isBack:boolean=false){ // 受到攻击时更新最后更新时间