fix(战斗): 移除近战单位后撤逻辑并调整远程单位攻击距离
- 移除所有单位类型在距离过近时的后撤行为,简化移动逻辑 - 远程单位现在只在距离过远时前进,不再因过近而后撤 - 调整远程单位长距离攻击的起始位置从240增加到300 - 保持战斗系统的核心行为不变,仅优化移动决策逻辑
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user