mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 19:34:47 +00:00
78 lines
1.7 KiB
TypeScript
78 lines
1.7 KiB
TypeScript
import { Vec2 } from "cc";
|
|
import { JNGSyncProtoBase } from "../../App";
|
|
import GBaseMode from "../GBaseMode";
|
|
import { v2 } from "cc";
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
|