fix(战斗): 移除近战单位后撤逻辑并调整远程单位攻击距离

- 移除所有单位类型在距离过近时的后撤行为,简化移动逻辑
- 远程单位现在只在距离过远时前进,不再因过近而后撤
- 调整远程单位长距离攻击的起始位置从240增加到300
- 保持战斗系统的核心行为不变,仅优化移动决策逻辑
This commit is contained in:
walkpan
2026-03-15 21:54:03 +08:00
parent 426fcec5c4
commit 8af04d61e0
2 changed files with 17 additions and 27 deletions

View File

@@ -128,15 +128,11 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
const currentX = view.node.position.x;
const enemyX = enemy.node.position.x;
const dist = Math.abs(currentX - enemyX);
const [rawMinRange] = this.resolveCombatRange(model, 0, this.minSpacingX);
const maxRange = this.minSpacingX;
const minRange = Math.min(rawMinRange, Math.max(0, maxRange - 1));
move.direction = enemyX > currentX ? 1 : -1;
if (dist < minRange) {
this.performRetreat(view, move, model, currentX);
} else if (dist <= maxRange) {
if (dist <= maxRange) {
view.status_change("idle");
model.is_atking = true;
} else {
@@ -151,14 +147,11 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
const enemyX = enemy.node.position.x;
const dist = Math.abs(currentX - enemyX);
const [minRange, maxRange] = this.resolveCombatRange(model, 120, 360);
const [, maxRange] = this.resolveCombatRange(model, 120, 360);
move.direction = enemyX > currentX ? 1 : -1;
if (dist < minRange) {
// 太近了,后撤
this.performRetreat(view, move, model, currentX);
} else if (dist > maxRange) {
if (dist > maxRange) {
const speed = model.speed / 3;
this.moveEntity(view, move.direction, speed);
model.is_atking = true;
@@ -173,14 +166,11 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
const enemyX = enemy.node.position.x;
const dist = Math.abs(currentX - enemyX);
const [minRange, maxRange] = this.resolveCombatRange(model, 360, 720);
const [, maxRange] = this.resolveCombatRange(model, 360, 720);
move.direction = enemyX > currentX ? 1 : -1;
if (dist < minRange) {
// 太近了,后撤 (远程单位对距离更敏感)
this.performRetreat(view, move, model, currentX);
} else if (dist > maxRange) {
if (dist > maxRange) {
const speed = model.speed / 3;
this.moveEntity(view, move.direction, speed);
model.is_atking = true;
@@ -239,7 +229,7 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
}
const side = model.fac === FacSet.MON ? 1 : -1;
if (rangeType === SkillRange.Long) {
return 240 * side;
return 300 * side;
}
if (rangeType === SkillRange.Mid) {
return 200 * side;