Files
heros/assets/script/game/skills/Skill.ts

61 lines
2.0 KiB
TypeScript

import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { BoxSet } from "../common/config/BoxSet";
import { SkillSet } from "../common/config/SkillSet";
import { smc } from "../common/SingletonModuleComp";
import { SkillCom } from "./SkillCom";
import { instantiate, Node, Prefab, Vec3 ,tween, v3,animation,Label,resources,SpriteFrame,Sprite} from "cc";
/** Skill 模块 */
@ecs.register(`Skill`)
export class Skill extends ecs.Entity {
SkillView!: SkillCom;
/** 实始添加的数据层组件 */
protected init() {
}
/** 模块资源释放 */
destroy() {
// 注: 自定义释放逻辑,视图层实现 ecs.IComp 接口的 ecs 组件需要手动释放
this.remove(SkillCom);
super.destroy();
}
load(
startPos: Vec3, // 起始位置
group: number, // 阵营
parent: Node, // 父节点
uuid: number, // 技能ID
targetPos: Vec3 // 目标位置
) {
const config = SkillSet[uuid];
if (!config) return;
// 加载预制体
const path = `game/skills/${config.sp_name}`;
const prefab = oops.res.get(path, Prefab);
const node = instantiate(prefab);
// 设置节点属性
node.parent = parent;
node.setPosition(startPos);
// 添加技能组件
const skillComp = node.getComponent(SkillCom);
this.add(skillComp);
// 初始化技能参数
skillComp.animType = config.AnimType;
skillComp.endType = config.endType;
skillComp.speed = config.speed;
skillComp.duration = config.in;
skillComp.startPos = startPos.clone();
skillComp.targetPos = targetPos.clone();
skillComp.prefabName = config.sp_name;
skillComp.group = group;
// 初始化动画名称
skillComp.animName = config.animName; // 从配置获取动画名称
}
}