refactor(hero): 统一击退位移逻辑到MoveSystem
将英雄后退的视图层位移操作迁移到MoveSystem统一处理, 通过knockbackVelocity组件属性实现平滑的击退位移衰减与边界钳制, 移除HeroViewComp中直接操作节点位置的代码,解耦视图与战斗逻辑。
This commit is contained in:
@@ -415,28 +415,10 @@ export class HeroViewComp extends CCComp {
|
||||
this.showDamage(damage, isCrit);
|
||||
}
|
||||
|
||||
private isBackingUp: boolean = false; // 🔥 添加后退状态标记
|
||||
|
||||
//后退
|
||||
back(distance: number = 0) {
|
||||
// 🔥 防止重复调用后退动画
|
||||
if (this.isBackingUp) return;
|
||||
this.isBackingUp = true; // 🔥 设置后退状态
|
||||
|
||||
// 基础击退距离 + 额外距离强化,双方阵营统一
|
||||
const dist = FightSet.BACK_RANG + distance;
|
||||
const isHero = this.model.fac == FacSet.HERO;
|
||||
// 边界钳制:HERO 不越过 BoxSet.LETF_END,MON 不越过 BoxSet.RIGHT_END
|
||||
const tx = isHero
|
||||
? Math.max(BoxSet.LETF_END, this.node.position.x - dist)
|
||||
: Math.min(BoxSet.RIGHT_END, this.node.position.x + dist);
|
||||
|
||||
tween(this.node)
|
||||
.to(0.1, { position: v3(tx, this.node.position.y, 0) })
|
||||
.call(() => {
|
||||
this.isBackingUp = false; // 🔥 动画完成后重置状态
|
||||
})
|
||||
.start();
|
||||
// 击退位移由 MoveSystem 统一处理,视图层只负责触发,不直接操作 position
|
||||
// 具体击退速度由 HeroAtkSystem 在伤害结算后写入 MoveComp.knockbackVelocity
|
||||
}
|
||||
// 伤害计算和战斗逻辑已迁移到 HeroBattleSystem
|
||||
|
||||
|
||||
Reference in New Issue
Block a user