refactor(战斗): 重构英雄阵型位置计算逻辑
- 将阵型位置计算提取到公共配置模块,定义 FormationPointX 映射 - 新增 resolveRangeTypeByHeroType 函数根据英雄类型解析默认攻击范围 - 新增 resolveFormationTargetX 函数统一计算英雄阵型目标X坐标 - 在 Hero 和 MoveSystem 中复用新的阵型计算函数,消除重复逻辑 - 优化远程英雄战斗逻辑,使其能根据阵型位置和攻击范围动态调整站位
This commit is contained in:
@@ -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)},
|
||||
|
||||
Reference in New Issue
Block a user