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 extends JNGSyncProtoBase{ //当前模式 _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; } } }