50 lines
1.1 KiB
TypeScript
50 lines
1.1 KiB
TypeScript
|
|
import { Component } from '@esengine/ecs-framework';
|
||
|
|
import { Vec3 } from 'cc';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 变换组件
|
||
|
|
* 存储实体的位置、旋转和缩放信息
|
||
|
|
*/
|
||
|
|
export class Transform extends Component {
|
||
|
|
/** 位置 */
|
||
|
|
public position: Vec3 = new Vec3(0, 0, 0);
|
||
|
|
|
||
|
|
/** 旋转 (度数) */
|
||
|
|
public rotation: Vec3 = new Vec3(0, 0, 0);
|
||
|
|
|
||
|
|
/** 缩放 */
|
||
|
|
public scale: Vec3 = new Vec3(1, 1, 1);
|
||
|
|
|
||
|
|
/** 移动速度 */
|
||
|
|
public speed: number = 100;
|
||
|
|
|
||
|
|
constructor() {
|
||
|
|
super();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 设置位置
|
||
|
|
*/
|
||
|
|
public setPosition(x: number, y: number, z: number = 0): void {
|
||
|
|
this.position.set(x, y, z);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 移动
|
||
|
|
*/
|
||
|
|
public move(deltaX: number, deltaY: number, deltaZ: number = 0): void {
|
||
|
|
this.position.x += deltaX;
|
||
|
|
this.position.y += deltaY;
|
||
|
|
this.position.z += deltaZ;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 重置组件
|
||
|
|
*/
|
||
|
|
public reset(): void {
|
||
|
|
this.position.set(0, 0, 0);
|
||
|
|
this.rotation.set(0, 0, 0);
|
||
|
|
this.scale.set(1, 1, 1);
|
||
|
|
this.speed = 100;
|
||
|
|
}
|
||
|
|
}
|