import { _decorator, Camera, Component, EventTouch, Node, UITransform, v2, v3, Vec2 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('n1')
export class n1 extends Component {
private pc2:Node = null
public pb1:Vec2 = v2(0,0)
private tra1:UITransform = null
@property
private max1:number = 100
@property(Camera)
private cal1:Camera = null
public onLoad(): void {
this.pc2 = this.node.getChildByName('bc2')
this.tra1 = this.node.getComponent(UITransform)
this.pc2.on(Node.EventType.TOUCH_START,this.onTouchStart,this)
this.pc2.on(Node.EventType.TOUCH_MOVE,this.onTouchMove,this)
this.pc2.on(Node.EventType.TOUCH_CANCEL,this.onTouchCancel,this)
this.pc2.on(Node.EventType.TOUCH_END,this.onTouchEnd,this)
}
onTouchStart(event:EventTouch){
this.pb1.x = this.pb1.y = 0
}
onTouchMove(event:EventTouch){
let sc1:Vec2 = event.getLocation()
//转到世界坐标
let sc2 = this.cal1.screenToWorld(v3(sc1.x,sc1.y,0))
//转到屏幕坐标
let sc3 = this.tra1.convertToNodeSpaceAR(sc2)
sc3.z = 0
let la1 = sc3.length()
//范围
if(la1 > this.max1){
sc3.x = sc3.x * this.max1 / la1
sc3.y = sc3.y * this.max1 / la1
la1 = this.max1
}
//方向向量
this.pb1.x = sc3.x / la1 //cos角度
this.pb1.y = sc3.y / la1 //sin角度
this.pc2.setPosition(sc3)
}
onTouchCancel(event:EventTouch){
this.pb1.x = this.pb1.y = 0
this.pc2.setPosition(0,0,0)
}
onTouchEnd(event:EventTouch){
this.pb1.x = this.pb1.y = 0
this.pc2.setPosition(0,0,0)
}
start() {
}
update(deltaTime: number) {
}
}