fix(hero): 修复英雄大招动画播放异常问题
1. 重构大招播放方法,支持传入自定义动画clip名,适配不同职业的大招动画 2. 修复技能匹配逻辑,通过前缀匹配处理max0/max1类型的大招技能 3. 更新技能配置表,将辅助职业的技能act改为max1适配新逻辑
This commit is contained in:
@@ -358,7 +358,7 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
},
|
},
|
||||||
// 法师/辅助群体攻击大招
|
// 法师/辅助群体攻击大招
|
||||||
6200: {
|
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,
|
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: "一个大火球",
|
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<number, SkillConfig> = {
|
|||||||
|
|
||||||
//============================= ====== 辅助技能 回合技能 ====== ==========================
|
//============================= ====== 辅助技能 回合技能 ====== ==========================
|
||||||
6301: {
|
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,
|
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秒",
|
RType: RType.fixed, EType: EType.animationEnd, info: "获得施法者最大生命30%的护盾, 持续7秒",
|
||||||
},
|
},
|
||||||
6302: {
|
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,
|
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: "治疗伙伴/自己",
|
RType: RType.fixed, EType: EType.animationEnd, info: "治疗伙伴/自己",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -80,9 +80,15 @@ export default class HeroAnmComp extends Component {
|
|||||||
if (this.maxPlaying) return
|
if (this.maxPlaying) return
|
||||||
this.anmcon.play(`atk0`)
|
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
|
if (this.maxPlaying) return
|
||||||
this.anmcon.play("max0")
|
this.anmcon.play(name)
|
||||||
}
|
}
|
||||||
play(anm: string = "") {
|
play(anm: string = "") {
|
||||||
if (anm === "") return
|
if (anm === "") return
|
||||||
|
|||||||
@@ -48,14 +48,16 @@ export class HeroSpine extends Component {
|
|||||||
atk() {
|
atk() {
|
||||||
this.anm.atk()
|
this.anm.atk()
|
||||||
}
|
}
|
||||||
max(){
|
max(name: string = "max0"){
|
||||||
this.anm.max()
|
this.anm.max(name)
|
||||||
}
|
}
|
||||||
play(name:string){
|
play(name:string){
|
||||||
|
// 技能表 act 配置的是 clip 名(max0/max1),不能用全等匹配 "max"
|
||||||
|
if(name.startsWith("max")){
|
||||||
|
this.max(name)
|
||||||
|
return
|
||||||
|
}
|
||||||
switch(name){
|
switch(name){
|
||||||
case "max":
|
|
||||||
this.max()
|
|
||||||
break
|
|
||||||
case "atk":
|
case "atk":
|
||||||
this.atk()
|
this.atk()
|
||||||
break
|
break
|
||||||
@@ -65,7 +67,7 @@ export class HeroSpine extends Component {
|
|||||||
case "move":
|
case "move":
|
||||||
this.move()
|
this.move()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
do_atked(){
|
do_atked(){
|
||||||
this.anm.atked()
|
this.anm.atked()
|
||||||
|
|||||||
@@ -487,11 +487,14 @@ export class HeroViewComp extends CCComp {
|
|||||||
playSkillAnm(act: string = "") {
|
playSkillAnm(act: string = "") {
|
||||||
mLogger.log(this.debugMode, 'HeroViewComp', '[heroview] act' + act,)
|
mLogger.log(this.debugMode, 'HeroViewComp', '[heroview] act' + act,)
|
||||||
if (act === "") return;
|
if (act === "") return;
|
||||||
|
// 技能表大招 act 配置为 clip 名("max0"/"max1"),必须前缀匹配,
|
||||||
|
// 全等匹配 "max" 会落空导致大招动画不播、isCastingMax 不置位
|
||||||
|
if (act.startsWith("max")) {
|
||||||
|
this.isCastingMax = true;
|
||||||
|
this.as.max(act)
|
||||||
|
return
|
||||||
|
}
|
||||||
switch (act) {
|
switch (act) {
|
||||||
case "max":
|
|
||||||
this.isCastingMax = true;
|
|
||||||
this.as.max()
|
|
||||||
break
|
|
||||||
case "atk":
|
case "atk":
|
||||||
this.as.atk()
|
this.as.atk()
|
||||||
break
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user