1. 修正多个英雄prefab的碰撞盒、显示尺寸参数,对齐统一规格 2. 调整mb1/3/4/5/6的本地位置参数适配新尺寸 3. 翻倍英雄基础血量属性适配平衡调整 4. 优化HeroAnmComp代码格式与动画播放逻辑
85 lines
2.7 KiB
TypeScript
85 lines
2.7 KiB
TypeScript
import { _decorator, Animation, AnimationState, CCClass, Component, } from "cc";
|
||
import { HeroViewComp } from "./HeroViewComp";
|
||
import { FacSet } from "../common/config/GameSet";
|
||
import { FlashSprite } from "./hit-flash-white/scripts/FlashSprite";
|
||
const { ccclass, property } = _decorator;
|
||
|
||
@ccclass('HeroAnmComp')
|
||
export default class HeroAnmComp extends Component {
|
||
fsSprite: FlashSprite = null!;
|
||
private anmcon: any = null
|
||
private _hasStop = true;
|
||
private _atkIndex = 0;
|
||
private default_anim: string = 'idle'
|
||
anms: any[] = ["idle", "move", "atk0", "max0", "max1"]
|
||
onLoad() {
|
||
this.anmcon = this.node.getComponent(Animation)
|
||
this.fsSprite = this.node.getComponent(FlashSprite);
|
||
this.anmcon.on(Animation.EventType.FINISHED, this.onAnimationFinished, this);
|
||
}
|
||
|
||
onDestroy() {
|
||
if (this.anmcon) {
|
||
this.anmcon.off(Animation.EventType.FINISHED, this.onAnimationFinished, this);
|
||
}
|
||
}
|
||
|
||
/** 大招是否播放中(最高优先级,期间禁止一切动画切换) */
|
||
private get maxPlaying(): boolean {
|
||
return !!(this.anmcon.getState("max0")?.isPlaying || this.anmcon.getState("max1")?.isPlaying);
|
||
}
|
||
/** 普攻是否播放中(次优先级,仅可被大招打断) */
|
||
private get atkPlaying(): boolean {
|
||
return !!this.anmcon.getState("atk0")?.isPlaying;
|
||
}
|
||
/** buff 是否播放中(可被大招/普攻打断,但拦截 idle/move) */
|
||
private get buffPlaying(): boolean {
|
||
return !!this.anmcon.getState("buff")?.isPlaying;
|
||
}
|
||
|
||
stop() {
|
||
this._hasStop = true;
|
||
}
|
||
onAnimationFinished(type: Animation.EventType, state: AnimationState) {
|
||
if (state.name != "idle" && state.name != "move") {
|
||
this.anmcon.play(this.default_anim)
|
||
}
|
||
}
|
||
atked() {
|
||
this.fsSprite.clickFlash();
|
||
}
|
||
move() {
|
||
if (this.maxPlaying || this.atkPlaying || this.buffPlaying) return
|
||
if (this.anmcon.getState("move").isPlaying) return
|
||
this.anmcon.play("move")
|
||
this.default_anim = 'move'
|
||
}
|
||
atk() {
|
||
if (this.maxPlaying) return
|
||
this.anmcon.play(`atk0`)
|
||
}
|
||
max() {
|
||
if (this.maxPlaying) return
|
||
this.anmcon.play("max0")
|
||
}
|
||
play(anm: string = "") {
|
||
if (anm === "") return
|
||
if (this.maxPlaying) return
|
||
this.anmcon.play(anm)
|
||
}
|
||
|
||
idle() {
|
||
if (this.maxPlaying || this.atkPlaying || this.buffPlaying) return
|
||
if (this.anmcon.getState("idle").isPlaying) return
|
||
this.anmcon.play("idle")
|
||
this.default_anim = 'idle'
|
||
}
|
||
buff() {
|
||
if (this.maxPlaying) return
|
||
this.anmcon.play("buff")
|
||
}
|
||
dead() {
|
||
|
||
}
|
||
}
|