DESKTOP-5RP3AKU\Jisol d1783204ad 更新主页内容
2023-11-15 02:32:00 +08:00

78 lines
1.7 KiB
TypeScript

import { Vec2 } from "cc";
import GBaseMode from "../GBaseMode";
import { v2 } from "cc";
import { JNGSyncProtoBase } from "../../components/JNComponent";
export enum GTowards{
RIGHT,LEFT
}
export default class GObject<T> extends JNGSyncProtoBase<T>{
//当前模式
_mode:GBaseMode<{}>;
//是否镜像
_isMirror:boolean = false;
get isMirror(){
return this._isMirror;
}
set isMirror(value:boolean){
if(value){
GObject.SetMirror(this);
}else{
GObject.SetMirror(this,false);
}
this._isMirror = value;
}
get mode():GBaseMode<{}>{
return this._mode;
}
set mode(value:GBaseMode<{}>){
this._mode = value;
}
//设置镜像
static SetMirror(role:GObject<{}>,flipX:boolean = true,flipY:boolean = false){
let node = role.node;
node.setScale(flipX ? -Math.abs(node.scale.x) : Math.abs(node.scale.x),flipY ? -Math.abs(node.scale.y) : Math.abs(node.scale.y))
}
//获取v2世界坐标
get v2World():Vec2{
let world = this.node.worldPosition;
return v2(world.x,world.y);
}
//向后添加距离
getWorldBackLen(add:Vec2){
if(this.isMirror){
return this.v2World.add(add);
}else{
add.y = 0-add.y;
return this.v2World.subtract(add);
}
}
//设置朝向
setTowards(towards:GTowards){
if(towards == GTowards.LEFT){
this.isMirror = true;
}else{
this.isMirror = false;
}
}
//镜像值处理
getMirrorValue(value:number){
if(this.isMirror){
return value * -1;
}else{
return value;
}
}
}