cocos虚拟摇杆

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) {

       

    }

}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值