fix(hero): 修复英雄大招动画播放异常问题

1. 重构大招播放方法,支持传入自定义动画clip名,适配不同职业的大招动画
2. 修复技能匹配逻辑,通过前缀匹配处理max0/max1类型的大招技能
3. 更新技能配置表,将辅助职业的技能act改为max1适配新逻辑
This commit is contained in:
panFD
2026-09-14 21:38:52 +08:00
parent 7640957325
commit 8c8810bb7e
4 changed files with 26 additions and 15 deletions

View File

@@ -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

View File

@@ -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()

View File

@@ -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