关于CocosCreator3.X 2d游戏学习中遇到的问题(摇杆位置与实际手指触碰位置不符)

关于CocosCreator3.X 2d游戏学习中遇到的问题(摇杆位置与实际手指触碰位置不符)。

这里的摇杆我是要做成生成在手指点击屏幕位置,然后再根据手指的移动对摇杆的位置进行改变。

最开始我是用的触碰事件中Touch里的getLocation()这个方法,在浏览器中运行时也能成功达到我所要的效果,但是仅仅只有在默认(cocoscreator中设置的屏幕比例中)能实现,切换成其他比例是不能实现。不仅如此,在手机上也无法达成效果。

后来看了手册里的其他方法,看到了有这么一个方法‘getLocationInView()’。根据描述,这是一个用于获取当前事件在游戏窗口中的位置的方法,方法返回值是一个二维坐标,也就是说用法和getLocation()差不多(至少我是则么认为,手动滑稽)。但是当我是用的时候,最终所呈现的确实和getLocation()差不多(总之就是没有实现我想要的效果的)。

于是当我继续向下浏览官方源码时,看到了又一个方法——getUILocation()。不错,这个方法对于当时的我来说宛如救命的最后一棵稻草,怀着忐忑的心情,进行了尝试。最终。。。是的,没错,终究还是实现我要的效果了(非常nice,手动滑稽 )。

以下是部分原码(仅供参考):

 //触摸屏幕并移动
   OnTouchMove(touch :Touch,event :EventTouch){
        const touchPosition = new Vec3(touch.getUILocationX(),touch.getUILocationY(),0);
        // console.log("点击位置(移动):" + touchPosition);
        // console.log("摇杆坐标(移动):" + this.node.position + ",摇杆世界坐标(移动):" + this.node.getWorldPosition());
        if(touchPosition.x <= 980 && touchPosition.y <= 800){
            // this.node.setWorldPosition(touchPosition);
            this.node.setWorldPosition(touchPosition);
        }
        else{
            this.node.setPosition(new Vec3(0,0,0));
        }
   }

写在后面:

不论是对于cocoscreator还是typescript我是还是小白,而且是直接从项目开始,很多东西饿没有系统学习,大都是用什么查什么。无奈现在与creator3.x相关的内容网上能查到的不多(或许是我没查到的问题),官方文档给的注释也只是很简单的描述了一下,甚至有些没注释,原谅我脑子不好使,很多东西饿真的理解不了,只有一点点的尝试,总之撞了很多墙。希望我的文能给其他人避一些坑吧。

最后,希望有大佬能看见我这卑微的求助:

请问一下getLocation()、getUILocation()、getLocationInView()分别都有什么用、适用于哪些地方?

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值