Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)

摘要:
版本:2.3.4参考cocos教程:坐标系和变换cocos的坐标系和其他引擎不一样。Egret中坐标系舞台的原点在左上角组件的原点也在左上角角度顺时针旋转为正数,逆时针旋转为负数Laya中坐标系和Egret一致Cocos坐标系和Laya、Egret的y轴朝下的,cocos的y轴是朝上的。而且cocos新建组件锚点0.5居中本地坐标转换到世界坐标//将节点坐标系下的一个点转换到世界空间坐标系。

版本:2.3.4

参考
cocos教程:坐标系和变换

cocos的坐标系和其他引擎不一样。

Egret中坐标系

舞台的原点在左上角

组件的原点也在左上角

角度顺时针旋转为正数,逆时针旋转为负数

Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)第1张

Laya中坐标系

和Egret一致

Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)第2张

Cocos坐标系

和Laya、Egret的y轴朝下的,cocos的y轴是朝上的。

角度顺时针是负数,逆时针是正数。

而且cocos新建组件锚点0.5居中

Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)第3张

本地坐标转换到世界坐标

//将节点坐标系下的一个点转换到世界空间坐标系。
convertToWorldSpaceAR  
//将一个相对于节点左下角的坐标位置转换到世界空间坐标系。
//这个 API 的设计是为了和 cocos2d-x 中行为一致,更多情况下你可能需要使用 convertToWorldSpaceAR
convertToWorldSpace
cocos提供了2个API将本地坐标转换到世界坐标,其中convertToWorldSpace已经不推荐使用
Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)第4张

Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)第5张

如上图

Canvas1560x720,锚点(0.5,0.5)

一个白色方块200x200,锚点(0.5,0.5),在距离左下角(200,200)的位置

一个红色方块100x100,锚点(0.5, 0.5),在白色方块内部,距离白色方块中心点(50,50)

局部坐标

console.log(white.x, white.y);  //-580 -160
console.log(red.x, red.y);      //50 50

局部转全局坐标

let whiteWorldPos = white.convertToWorldSpaceAR(white.position);
console.log(whiteWorldPos.x, whiteWorldPos.y);  //-379.78647686832744 40

let redWorldPos = red.convertToWorldSpaceAR(red.position);
console.log(redWorldPos.x, redWorldPos.y);      //300.21352313167256 300

局部转全局坐标

let whiteWorldPos = white.parent.convertToWorldSpaceAR(white.position);
console.log(whiteWorldPos.x, whiteWorldPos.y);  //200.21352313167256 200

let redWorldPos = red.parent.convertToWorldSpaceAR(red.position);
console.log(redWorldPos.x, redWorldPos.y);      //250.21352313167256 250

全局转局部坐标

let redLocalPos = red.convertToNodeSpaceAR(new cc.Vec2(250,250));
console.log(redLocalPos); //0,0

全局转局部坐标

let redLocalPos = red.parent.convertToNodeSpaceAR(new cc.Vec2(250,250));
console.log(redLocalPos); //50,50

免责声明:文章转载自《Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Netdata介绍及安装部署用configmap管理配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

cocos2d-x关于CCTableView的“乱序问题”的理解

Cocos2d-x有一个不错的控件CCTableView。之前用的时候发现有cell的顺序错乱和重复出现的问题。后来仔细看了一下源码,发现是自己用法错误。但是网上有人说是一个bug,要改源码。我发现2.04以上的源码都是没问题的。 先来看看网上说的改源码是怎么样改的: CCTableViewCell*CCTableView::dequeueCell() {...

如何将cocos、spine等骨骼文件转换成dragonbones的骨骼文件

简介 本片blog主要给大家提供一个统一的骨骼动画解决方案,无论你之前用的是cocos自带的骨骼,还是spine,或者是两者都有,都可以转换成dragonbones骨骼,然后加到游戏中使用。 如果你的事2.3及以后的版本的骨骼文件直接就可以导入,这里就不做介绍了。 工具 Dragonbones pro 4.5 下载地址http://dragonbones....

Cocos2dx 多线程

多-threaded负荷plist特征。获取知识的必要性: 1.多线程开启:pthread 2.怎样在线程中载入plist 一.多线程开启 当我们想在程序中开多线程中。第一想到的是cocos2d-x有没有自带方法。幸运的是我们找到了CCThread,不幸却发现里面什么都没有。 cocos2d-x自带了一个第三方插件--pthread,在cocos2dx...

cocos2d环境搭建

cocos2d是一个开源免费的Python 2D游戏引擎,至于iphone上面的cocos2d-iphone在代码的结构上基本与这个一样,不过cocos2d-iphone因为收到iphone开发者的积极追捧,而更新频繁,功能越来越强大。而cocos2d好像已经停止更新,最后一个release版本是0.4rc0 在官网也有cocos2d的环境搭建,不过写的太...

Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密

http://www.cocoachina.com/bbs/read.php?tid=205802 lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(bytecode)从而实现加密。试了一下。确实可行。 以下是使用原生的lua解释器编译字节码: 1、新建一个名为1.lua的文件。里面仅仅有一句话print("He...

我的Cocos2d-x学习笔记(七)纹理缓存、帧缓存、精灵的创建、zOrder

一、纹理缓存、帧缓存、动画缓存 缓存机制:存储设施有快慢之分,PC机上有硬盘与内存之分,计算机软件运行时候把资源加载到内存中运行;手机与PC也是类似的。当手机软件运行时候,把经常需要用到的资源预先加载到存取速度快的内存中,之后访问该资源将会节省大量时间。 Cocos2d-x为我们提供了三个实现缓存的接口,有纹理缓存、帧缓存、动画缓存,都是全局单例。 纹理缓...