From 8c8810bb7ed3f0638f923e28f07fe241eee21d1f Mon Sep 17 00:00:00 2001 From: panFD Date: Mon, 14 Sep 2026 21:38:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(hero):=20=E4=BF=AE=E5=A4=8D=E8=8B=B1?= =?UTF-8?q?=E9=9B=84=E5=A4=A7=E6=8B=9B=E5=8A=A8=E7=94=BB=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 重构大招播放方法,支持传入自定义动画clip名,适配不同职业的大招动画 2. 修复技能匹配逻辑,通过前缀匹配处理max0/max1类型的大招技能 3. 更新技能配置表,将辅助职业的技能act改为max1适配新逻辑 --- assets/script/game/common/config/SkillSet.ts | 6 +++--- assets/script/game/hero/HeroAnmComp.ts | 10 ++++++++-- assets/script/game/hero/HeroSpine.ts | 14 ++++++++------ assets/script/game/hero/HeroViewComp.ts | 11 +++++++---- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index 466cb168..41785462 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -358,7 +358,7 @@ export const SkillSet: Record = { }, // 法师/辅助群体攻击大招 6200: { - uuid: 6200, name: "火球术", sp_name: "maxm1", icon: "31-Fire", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "max0", + uuid: 6200, name: "火球术", sp_name: "maxm1", icon: "31-Fire", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "max1", DTType: DTType.single, ap: 100, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote, RType: RType.bezier, EType: EType.collision, bezier_start_y: 20, bezier_mid_y: 140, bezier_arc: 1.05, info: "一个大火球", }, @@ -385,12 +385,12 @@ export const SkillSet: Record = { //============================= ====== 辅助技能 回合技能 ====== ========================== 6301: { - uuid: 6301, name: "护盾", sp_name: "buff_wind", icon: "28-Electric-Wave", TGroup: TGroup.Self, readyAnm: "up_blue", endAnm: "", act: "atk", + uuid: 6301, name: "护盾", sp_name: "buff_wind", icon: "28-Electric-Wave", TGroup: TGroup.Self, readyAnm: "up_blue", endAnm: "", act: "max1", DTType: DTType.single, kind: SkillKind.Shield, ap: 30, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support, shield_duration: 7, RType: RType.fixed, EType: EType.animationEnd, info: "获得施法者最大生命30%的护盾, 持续7秒", }, 6302: { - uuid: 6302, name: "治疗", sp_name: "buff_wind", icon: "g_priest_zldy_skill", TGroup: TGroup.Team, readyAnm: "up_green", endAnm: "", act: "atk", + uuid: 6302, name: "治疗", sp_name: "buff_wind", icon: "g_priest_zldy_skill", TGroup: TGroup.Team, readyAnm: "up_green", endAnm: "", act: "max1", DTType: DTType.single, kind: SkillKind.Heal, ap: 300, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support, RType: RType.fixed, EType: EType.animationEnd, info: "治疗伙伴/自己", }, diff --git a/assets/script/game/hero/HeroAnmComp.ts b/assets/script/game/hero/HeroAnmComp.ts index 513875c1..c4da55b0 100644 --- a/assets/script/game/hero/HeroAnmComp.ts +++ b/assets/script/game/hero/HeroAnmComp.ts @@ -80,9 +80,15 @@ export default class HeroAnmComp extends Component { if (this.maxPlaying) return this.anmcon.play(`atk0`) } - max() { + /** + * 播放大招动画。 + * Why 带 name:技能表 act 直接配置 clip 名(战士技 "max0"、法系技 "max1"), + * 固定播 max0 会导致法系大招动画永远播不出。 + * @param name 大招 clip 名("max0"/"max1"),maxPlaying guard 已同时覆盖两者 + */ + max(name: string = "max0") { if (this.maxPlaying) return - this.anmcon.play("max0") + this.anmcon.play(name) } play(anm: string = "") { if (anm === "") return diff --git a/assets/script/game/hero/HeroSpine.ts b/assets/script/game/hero/HeroSpine.ts index e99d09e6..8175fb0f 100644 --- a/assets/script/game/hero/HeroSpine.ts +++ b/assets/script/game/hero/HeroSpine.ts @@ -48,14 +48,16 @@ export class HeroSpine extends Component { atk() { this.anm.atk() } - max(){ - this.anm.max() + max(name: string = "max0"){ + this.anm.max(name) } play(name:string){ + // 技能表 act 配置的是 clip 名(max0/max1),不能用全等匹配 "max" + if(name.startsWith("max")){ + this.max(name) + return + } switch(name){ - case "max": - this.max() - break case "atk": this.atk() break @@ -65,7 +67,7 @@ export class HeroSpine extends Component { case "move": this.move() break - } + } } do_atked(){ this.anm.atked() diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index bd3762b4..ad23fd2c 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -487,11 +487,14 @@ export class HeroViewComp extends CCComp { playSkillAnm(act: string = "") { mLogger.log(this.debugMode, 'HeroViewComp', '[heroview] act' + act,) if (act === "") return; + // 技能表大招 act 配置为 clip 名("max0"/"max1"),必须前缀匹配, + // 全等匹配 "max" 会落空导致大招动画不播、isCastingMax 不置位 + if (act.startsWith("max")) { + this.isCastingMax = true; + this.as.max(act) + return + } switch (act) { - case "max": - this.isCastingMax = true; - this.as.max() - break case "atk": this.as.atk() break