From eb4e544363379a46a3915a1e4df6dec31a5203ce Mon Sep 17 00:00:00 2001 From: panw Date: Wed, 18 Mar 2026 09:57:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=88=98=E6=96=97):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=B0=84=E6=89=8B=E6=8A=80=E8=83=BD=E5=92=8C=E8=BF=91=E6=88=98?= =?UTF-8?q?=E8=B5=B0=E4=BD=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将射手英雄的技能从[6005,6006]改为[6005,6008] - 调整技能6005、6006的hit_count从2和3统一为1,提高技能6008的hit_count从1到6 - 优化近战单位的走位逻辑,增加攻击准备锁定和通过阈值判断,调整盟友重叠间距和位移释放距离 --- assets/script/game/common/config/SkillSet.ts | 6 +++--- assets/script/game/common/config/heroSet.ts | 2 +- assets/script/game/hero/MoveComp.ts | 12 ++++++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index 5fb94920..7beb03d6 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -211,13 +211,13 @@ export const SkillSet: Record = { }, 6005: { uuid:6005,name:"蓝箭",sp_name:"arrow_blue",icon:"1135",TGroup:TGroup.Enemy,TType:TType.Frontline,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single, - ap:100,hit_count:2,hitcd:0.2,speed:720,with:0, + ap:100,hit_count:1,hitcd:0.2,speed:720,with:0, ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision, buffs:[],debuffs:[],info:"对前方单个目标造成100%攻击的伤害", }, 6006: { uuid:6006,name:"绿箭",sp_name:"arrow_green",icon:"1135",TGroup:TGroup.Enemy,TType:TType.Frontline,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single, - ap:100,hit_count:3,hitcd:0.2,speed:720,with:0, + ap:100,hit_count:1,hitcd:0.2,speed:720,with:0, ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision, buffs:[],debuffs:[],info:"对前方单个目标造成100%攻击的伤害", }, @@ -229,7 +229,7 @@ export const SkillSet: Record = { }, 6008: { uuid:6008,name:"光箭",sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,TType:TType.Frontline,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single, - ap:100,hit_count:1,hitcd:0.2,speed:720,with:0, + ap:100,hit_count:6,hitcd:0.2,speed:720,with:0, ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.animationEnd, buffs:[],debuffs:[],info:"对前方单个目标造成100%攻击的伤害", }, diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index a44f233d..2432d5ee 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -163,7 +163,7 @@ export const HeroInfo: Record = { type:HType.Long,lv:1,hp:150,ap:40,speed:95,skills:[6003,6101],info:"奥术法师"}, 5003:{uuid:5003,name:"射手",icon:"1001",path:"ha1", fac:FacSet.HERO, kind:2,as:1,ss:5, - type:HType.Long,lv:1,hp:180,ap:30,speed:140,skills:[6005,6006],info:"射手"}, + type:HType.Long,lv:1,hp:180,ap:30,speed:140,skills:[6005,6008],info:"射手"}, 5005:{uuid:5005,name:"牧师",icon:"1001",path:"hh1", fac:FacSet.HERO, kind:2,as:1,ss:5, type:HType.Long,lv:1,hp:160,ap:25,speed:100,skills:[6003,6100],info:"牧师"}, diff --git a/assets/script/game/hero/MoveComp.ts b/assets/script/game/hero/MoveComp.ts index 3769dcff..ad6dfaf2 100644 --- a/assets/script/game/hero/MoveComp.ts +++ b/assets/script/game/hero/MoveComp.ts @@ -38,8 +38,10 @@ interface MoveFacConfig { export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate { private readonly meleeAttackRange = 52; private readonly allySpacingX = 40; - private readonly allyOverlapSpacingX = 8; - private readonly displacementReleaseX = 24; + private readonly allyOverlapSpacingX = 14; + private readonly displacementReleaseX = 10; + private readonly attackReadyLockX = 10; + private readonly attackPassThresholdX = 60; private readonly minSpacingY = 30; private readonly renderSortInterval = 0.05; private renderSortElapsed = 0; @@ -327,12 +329,18 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate selfPriority: number ): number { if (!selfAttrs || !selfMove || !allyMove) return this.allySpacingX; + if ((selfAttrs.type as HType) !== HType.Melee) return this.allySpacingX; if (allyPriority !== selfPriority) return this.allySpacingX; const selfTargetX = selfMove.targetX; const allyTargetX = allyMove.targetX; const selfHasTarget = Math.abs(selfTargetX) > 0.01; const allyHasTarget = Math.abs(allyTargetX) > 0.01; if (!selfHasTarget || !allyHasTarget) return this.allySpacingX; + const selfDistToAttack = Math.abs(selfTargetX - currentX); + const canAttackNow = selfAttrs.enemy_in_cast_range || selfDistToAttack <= this.attackReadyLockX; + if (canAttackNow) return this.allySpacingX; + const targetTooFar = selfDistToAttack >= this.attackPassThresholdX; + if (!targetTooFar) return this.allySpacingX; const allyDisplaced = Math.abs(allyX - allyTargetX) >= this.displacementReleaseX; const selfNeedAdvance = direction > 0 ? selfTargetX > currentX + 2 : selfTargetX < currentX - 2; if (allyDisplaced && selfNeedAdvance) return this.allyOverlapSpacingX;