重命名SMoveData组件并修复组件添加方式 将SMoveData组件重命名为SMoveDataComp以保持命名一致性 修复Skill类中组件添加方式,明确指定组件类型参数
63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import { Vec3, v3 } from "cc";
|
|
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
import { BezierMove } from "../BezierMove/BezierMove";
|
|
import { RType, SkillSet } from "../common/config/SkillSet";
|
|
import { BoxSet } from "../common/config/BoxSet";
|
|
/**
|
|
* 技能移动数据组件
|
|
* 存储技能实体的移动相关数据
|
|
*/
|
|
@ecs.register('SMoveDataComp')
|
|
export class SMoveDataComp extends ecs.Comp {
|
|
/** 起始位置 */
|
|
startPos: Vec3 = null;
|
|
/** 目标位置 */
|
|
targetPos: Vec3 = null;
|
|
/** 移动速度 */
|
|
speed: number = 500;
|
|
/** 移动持续时间 */
|
|
duration: number = 0;
|
|
/** 移动方向 */
|
|
direction: Vec3 = v3();
|
|
/** 是否自动销毁(到达目标后) */
|
|
autoDestroy: boolean = true;
|
|
s_uuid:number=0;
|
|
reset() {
|
|
this.startPos.set(0, 0, 0);
|
|
this.targetPos.set(0, 0, 0);
|
|
this.speed = 500;
|
|
this.duration = 0;
|
|
this.direction.set(0, 0, 0);
|
|
this.autoDestroy = true;
|
|
}
|
|
rePos(originalStart:Vec3){
|
|
if(!originalStart){
|
|
return
|
|
}
|
|
// 计算延长后的目标点坐标
|
|
const originalTarget = v3(this.targetPos.x, this.targetPos.y + BoxSet.ATK_Y);
|
|
const direction = new Vec3();
|
|
Vec3.subtract(direction, originalTarget, originalStart);
|
|
const distance = direction.length();
|
|
direction.normalize();
|
|
const extendedTarget = new Vec3();
|
|
Vec3.scaleAndAdd(extendedTarget, originalTarget, direction, 720);
|
|
this.startPos.set(originalStart);
|
|
this.targetPos.set(extendedTarget);
|
|
}
|
|
}
|
|
|
|
// /** 业务层业务逻辑处理对象 */
|
|
// export class SMoveSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
|
|
// filter(): ecs.IMatcher {
|
|
// return ecs.allOf(SMoveDataComp);
|
|
// }
|
|
// entityEnter(e: ecs.Entity): void {
|
|
// // 注:自定义业务逻辑
|
|
// let s_uuid=e.get(SMoveDataComp).s_uuid
|
|
// let SConf=SkillSet[s_uuid]
|
|
|
|
// e.remove(SMoveDataComp);
|
|
// }
|
|
|
|
// }
|