fix(hero): 调整近战英雄攻击距离并简化移动逻辑
将 HeroDisVal 中近战英雄的攻击距离从 150 调整为 360,以改善战斗体验。 移除 `processMeleeLogic` 中的独立逻辑,改为复用 `processRangedFormationCombat` 方法,统一移动与攻击行为,提升代码可维护性。
This commit is contained in:
@@ -26,7 +26,7 @@ export const FormationPointX = {
|
||||
} as const;
|
||||
|
||||
export const HeroDisVal: Record<HType.Melee | HType.Mid | HType.Long, number> = {
|
||||
[HType.Melee]: 150,
|
||||
[HType.Melee]: 360,
|
||||
[HType.Mid]: 400,
|
||||
[HType.Long]: 720,
|
||||
}
|
||||
|
||||
@@ -200,28 +200,7 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
}
|
||||
|
||||
private processMeleeLogic(e: ecs.Entity, move: MoveComp, view: HeroViewComp, model: HeroAttrsComp, enemy: HeroViewComp) {
|
||||
const currentX = view.node.position.x;
|
||||
const enemyX = enemy.node.position.x;
|
||||
const dist = Math.abs(currentX - enemyX);
|
||||
const maxRange = this.meleeAttackRange;
|
||||
const minRange = Math.min(this.meleeMinEnemyDistanceX, maxRange);
|
||||
|
||||
/** 近战目标点 = 敌人位置 - 朝向 * minRange,确保能贴近但不穿模 */
|
||||
move.direction = enemyX > currentX ? 1 : -1;
|
||||
move.targetX = enemyX - move.direction * minRange;
|
||||
|
||||
if (dist <= minRange) {
|
||||
view.status_change("idle");
|
||||
model.is_atking = true;
|
||||
} else if (dist <= maxRange) {
|
||||
const speed = model.speed / 3;
|
||||
this.moveEntity(view, move.direction, speed, move.targetX);
|
||||
model.is_atking = true;
|
||||
} else {
|
||||
const speed = model.speed / 3;
|
||||
this.moveEntity(view, move.direction, speed);
|
||||
model.is_atking = true;
|
||||
}
|
||||
this.processRangedFormationCombat(move, view, model);
|
||||
}
|
||||
|
||||
private processMidLogic(e: ecs.Entity, move: MoveComp, view: HeroViewComp, model: HeroAttrsComp, enemy: HeroViewComp) {
|
||||
|
||||
Reference in New Issue
Block a user