cocos creator教程之世界坐标和局部坐标

文章来源: https://moejj.com/cocos-location/, 本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

cocos creator中的canvas画布,由用户自己设定的坐标是局部坐标,默认是在画布正中间,原点(0,0)坐标在正中间,而游戏生成之后,用户点触游戏界面中获取到的是世界地图坐标,世界地图的原点(0,0)在左下角。两个坐标是不一样的,在编码的时候需要自己进行转换,而cocos creator则提供了非常方便的转换方法。

官方示例

var self = this;
self.canvas.on(cc.Node.EventType.TOUCH_START, function (event) {
            var touches = event.getTouches();
            var touchLoc = touches[0].getLocation();
            self.isMoving = true;
            self.moveToPos = self.follower.parent.convertToNodeSpaceAR(touchLoc);
            console.log(self.moveToPos.angle(cc.v2(0, 10)) * 180 / Math.PI);
            console.log(self.moveToPos);
            self.touchLocationDisplay.textKey = i18n.t("cases/03_gameplay/01_player_control/On/OnTouchCtrl.js.1") + Math.floor(touchLoc.x) + ', ' + Math.floor(touchLoc.y) + ')';
        }, self.node);

canvas为画布,画布监听了触控开始的事件,touches获取触控数组,多点触控则有多个数值,这里我们只获取第一个触控点,也就是touches[0],这里获取的touchLoc就是第一个触控点的位置坐标,类型是Vec2,Vec2是cocos creator代表向量和坐标的类型, 需要注意是touchLoc的坐标值是世界地图的坐标 ,所以如果用于编码的话需要将世界坐标转换为局部坐标,也就是node的坐标,cocos creator提供了一个方法node.convertToNodeSpaceAR()可以将世界地图坐标转换为node的局部坐标,这里获取的是folower这个node的父node的局部坐标。

如果想查看更多关于convertToNodeSpaceAR()的内容,可前往 http://docs.cocos.com/creator/api/zh/classes/Node.html#converttonodespacear 进行查看。

补充内容

在上面有一个方法angle(),其为Vec2类型的方法,用法为cc.v2(0,10).angle(cc.v2(10,0)),获取的是当前向量和参数中向量之间的弧度。

弧度可以转换为角度,也就是cc.v2(0,10).angle(cc.v2(10,0)) * 180 / Math.PI。

这里大家可以自行测试。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

为你推荐:

查看所有标签

码农书籍
Go语言学习笔记

Go语言学习笔记

雨痕 / 电子工业出版社 / 2016-6 / 89

作为时下流行的一种系统编程语言,Go简单易学,性能很好,且支持各类主流平台。已有大量项目采用Go编写,这其中就包括Docker等明星作品,其开发和执行效率早已被证明。本书经四年多逐步完善,内容覆盖了语言、运行时、性能优化、工具链等各层面知识。且内容经大量读者反馈和校对,没有明显的缺陷和错误。上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。下卷则对运行时源码做出深度剖析,引导读者透彻了解语言功能背后的支持环境和运行体系,诸如内存分配、垃圾回收和并发调度等。本书不适合编程初学入门,可供有实际编程经验或正在使用Go工作的人群参考。

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具