dd
This commit is contained in:
41
assets/script/game/component/hero/SpineComp.ts
Normal file
41
assets/script/game/component/hero/SpineComp.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { _decorator, Component, sp } from 'cc';
|
||||
import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { HeroAnimState } from "./HeroAnimState";
|
||||
|
||||
@ecs.register('SpineComp')
|
||||
export class SpineComp extends ecs.Comp {
|
||||
private _skeleton: sp.Skeleton = null!;
|
||||
|
||||
/** 设置动画过渡混合时间 */
|
||||
setMix(from: string, to: string, duration: number) {
|
||||
this._skeleton.setMix(from, to, duration);
|
||||
}
|
||||
|
||||
/** 初始化Spine组件 */
|
||||
init(node: sp.Skeleton): this {
|
||||
this._skeleton = node;
|
||||
// 根据实际动画配置过渡
|
||||
this.setMix("Walking", "Attacking", 0.2);
|
||||
this.setMix("Attacking", "Walking", 0.3);
|
||||
this.setMix("Attacking", "Idle", 0.1);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 播放动画
|
||||
* @param animationName 动画名称
|
||||
* @param loop 是否循环
|
||||
*/
|
||||
play(animationName: string, loop: boolean = true) {
|
||||
this._skeleton.setAnimation(0, animationName, loop);
|
||||
}
|
||||
|
||||
/** 设置皮肤 */
|
||||
setSkin(skinName: string) {
|
||||
this._skeleton.setSkin(skinName);
|
||||
}
|
||||
|
||||
reset() {
|
||||
this._skeleton = null!;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user