refactor(战斗): 重构英雄阵型位置计算逻辑

- 将阵型位置计算提取到公共配置模块,定义 FormationPointX 映射
- 新增 resolveRangeTypeByHeroType 函数根据英雄类型解析默认攻击范围
- 新增 resolveFormationTargetX 函数统一计算英雄阵型目标X坐标
- 在 Hero 和 MoveSystem 中复用新的阵型计算函数,消除重复逻辑
- 优化远程英雄战斗逻辑,使其能根据阵型位置和攻击范围动态调整站位
This commit is contained in:
panw
2026-03-16 15:46:28 +08:00
parent acaa6125c2
commit 11e6f49479
3 changed files with 38 additions and 50 deletions

View File

@@ -51,6 +51,26 @@ export const HeroPos={
1:{pos:v3(0,BoxSet.GAME_LINE,0)},
2:{pos:v3(0,BoxSet.GAME_LINE,0)},
}
export const FormationPointX = {
[SkillRange.Melee]: 0,
[SkillRange.Mid]: 100,
[SkillRange.Long]: 180,
} as const;
export const resolveRangeTypeByHeroType = (type: HType, rangeType?: SkillRange | null): SkillRange => {
if (rangeType !== undefined && rangeType !== null) return rangeType;
if (type === HType.warrior || type === HType.assassin) return SkillRange.Melee;
if (type === HType.remote) return SkillRange.Long;
return SkillRange.Mid;
}
export const resolveFormationTargetX = (fac: FacSet, type: HType, rangeType?: SkillRange | null): number => {
const resolvedRangeType = resolveRangeTypeByHeroType(type, rangeType);
const side = fac === FacSet.MON ? 1 : -1;
return FormationPointX[resolvedRangeType] * side;
}
export const MonSet = {
0:{pos:v3(360,BoxSet.GAME_LINE+10,0)},
1:{pos:v3(360,BoxSet.GAME_LINE-10,0)},