Files
heros/assets/script/game/role/view/RoleSpineAnimator.ts
2024-07-21 22:39:39 +08:00

109 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Author: dgflash
* @Date: 2022-08-04 15:08:35
* @LastEditors: dgflash
* @LastEditTime: 2022-08-04 15:26:38
*/
import { sp, _decorator ,Component} from "cc";
import { smc } from "../../common/SingletonModuleComp";
const { ccclass, property, requireComponent, disallowMultiple } = _decorator;
/**
* Spine状态机组件主状态机trackIndex为0
*/
@ccclass
@disallowMultiple
@requireComponent(sp.Skeleton)
export default class RoleSpineAnimator extends Component {
private animName: string = "idle";
private loop: boolean = true;
private spine!: sp.Skeleton;
start() {
this.spine = this.getComponent(sp.Skeleton)!;
console.log("RoleSpineAnimator start smc.heros",smc.heros);
let heros=smc.heros
if(heros.length>0){
/**
* 取第一个heros
*/
this.spine.setSkin(heros[0])
console.log("RoleSpineAnimator setSkin", heros[0]);
switch (heros[0]) {
case 'war':
this.spine.setAnimation(0, 'idle', true)
break;
case 'magic':
this.spine.setAnimation(0, 'idle', true)
break;
case 'heath':
this.spine.setAnimation(0, 'idle', true)
break;
default:
this.spine.setAnimation(0, 'idle', true)
break;
}
//移除smc.heros[0],heros key 重新取
heros.splice(0,1)
smc.heros=heros
}else if(smc.monsters.length>0){
this.spine.setSkin(smc.monsters[0])
console.log("RoleSpineAnimator setSkin", smc.monsters[0]);
switch (smc.monsters[0]) {
case 'war':
this.spine.setAnimation(0, 'idle', true)
break;
case 'magic':
this.spine.setAnimation(0, 'idle', true)
break;
case 'heath':
this.spine.setAnimation(0, 'idle', true)
break;
default:
this.spine.setAnimation(0, 'idle', true)
break;
}
}
}
lateUpdate(dt: number) {
}
getRandomInt(min: number, max: number): number {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
play(animName: string, loop: boolean) {
if (animName) {
this.animName = animName;
this.loop = loop;
this.spine.setAnimation(0, this.animName, this.loop);
}
else {
}
}
/**
* 播放动画
* @override
* @param animName 动画名
* @param loop 是否循环播放
*/
protected playAnimation(animName: string, loop: boolean) {
console.log("RoleSpineAnimator playAnimation");
if (animName) {
console.log("RoleSpineAnimator playAnimation animName", animName);
this.animName = animName;
this.loop = loop;
this.spine.setAnimation(0, this.animName, this.loop);
}
else {
}
}
}