文档章节

Cocos2d-x-v3坐标体系

珲少
 珲少
发布于 2015/08/03 23:06
字数 846
阅读 422
收藏 4

行业解决方案、产品招募中!想赚钱就来传!>>>

Cocos2d-x坐标体系

        cocos2d引擎是一款非常优秀的扩平台的游戏开发引擎,在apple游戏榜上,有很多排名靠前的游戏都是由他创造出来的,他也有一套十分方便的坐标体系。

一、UI坐标体系

        UI坐标体系相对于移动开发人员来说再熟悉不过了,在iOS系统中,它就是frame体系,即坐标(0,0)点位于屏幕的左上角,向右x增大,向下y增大。

二、OpenGL坐标体系

        OpenGL坐标系是cocos2d中使用的坐标系,它更接近于数学上的坐标系,即(0,0)点位于屏幕的左下角,往左x增大,往上y增大。这套坐标系统也更符合物理世界的逻辑,便于游戏的开发。当然,这并不是说cocos2d中所有的坐标都是采用这个体系标准的,在手指点击事件层,接收到点击坐标点的坐标就是采用UI坐标系表示的。

三、世界坐标系

        简单的理解,世界坐标系就是绝对坐标系,在cocos2d中,精灵的坐标是相对于其父视图而言的,是相对的坐标,世界坐标则是统一绝对的坐标,在项目中是固定的。

四、相对坐标系

        最常用的坐标体系,任何类设置的坐标都是相对于其父视图原点的坐标。

五、坐标系的转换

        由于UI坐标系与OpenGL坐标系的差异,在开发中,我们有时需要其两个标准的相互转化,cocos2d中也未我们提供了相应的方法:

 

Vec2 Director::convertToGL(const Vec2& uiPoint);

        这个方法将UI坐标系转换为OpenGL坐标系。

 

Vec2 Director::convertToUI(const Vec2& glPoint);

        这个方法将OpenGL坐标系转换为UI坐标系。

 

Vec2 Node::convertToWorldSpace(const Vec2& nodePoint) const;

        这个方法将物体的相对坐标

 

Vec2 Node::convertToNodeSpace(const Vec2& worldPoint) const;

        这个方法将世界坐标转化为某一节点的相对坐标。

 

还有两个转化的方法与上面类似,只有一点不同,这两个方法参照的原点不是系统默认的,而是我们设置的节点的锚点:

 

Vec2 Node::convertToNodeSpaceAR(const Vec2& worldPoint) const;

 

Vec2 Node::convertToWorldSpaceAR(const Vec2& nodePoint) const;

 

六、锚点

    锚点的概念可以理解为参照点,其设置范围为0-1,系统默认的节点锚点为(0,0)。在UI坐标系中,(0,0)点就是节点的左上角,在OpenGL坐标系中,(0,0)点就是节点的左下角。例如,如果我将锚点设置为(0.5,0.5),则在UI和OpenGL坐标系中,(0,0)点都是节点的中心点。又如,我将锚点设置为(1,1),则在UI坐标系中,原点为右下角,在OpenGL坐标系中,原点为右上角,锚点的用处就是更改参考点,在另一种情形下,锚点对程序也会产生很大的影响,就是当我们设置一个节点旋转或者缩放时,节点会以锚点位置为中心进行旋转或缩放。

    cocos2d中通过下面方法分别来设置和获取锚点:

 

void Sprite::setAnchorPoint(const Vec2& anchor);

设置锚点

const Vec2& Node::getAnchorPoint() const;

获取锚点

专注技术,热爱生活,交流技术,也做朋友。

——珲少 QQ群:203317592

 

珲少

珲少

粉丝 908
博文 401
码字总数 495594
作品 0
崇明
程序员
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
5.9K
18
【opencv】图形的绘制

1.矩形图像的绘制: 原函数:void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8,int shift=0) img就是需要绘制的图像 pt1 and pt......

其实我是兔子
2014/10/08
1.1K
1
可视化的蛋白质配位图--VPLG

可视化的蛋白质配位图(VPLG)使用一个基于图的模型来描述蛋白质的结构,基于超级二级结构级别。一个蛋白质配位图是计算从原子坐标在PDB文件和二级结构作业的DSSP算法。在这个图,顶点代表二级结...

匿名
2012/10/28
2.2K
0
磁盘空间统计工具--Disk Inventory X

Disk Inventory X 是运行于 Mac OS X 10.3 (及以上)的磁盘空间统计工具。它通过 "treemaps" 的特殊方式显示了文件及文件夹的占用空间情况。 如果你经常想知道你的磁盘空间都被什么文件占用的...

匿名
2012/11/13
1.2K
0
俄罗斯方块cocos2d-x

利用cocos2d-x实现俄罗斯方块游戏的简单功能。其中只实现了一种方块,有兴趣的话可以自己添加一些块。只能在Retina硬件模式下才能正常显示。 作者说:如果有好的建议亲记得联系我632272261@q...

匿名
2013/04/18
3.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

Java中使用OpenSSL生成的RSA公私钥进行数据加解密

当前使用的是Linux系统,已经按装使用OpenSSL软件包, 一、使用OpenSSL来生成私钥和公钥 1、执行命令openssl version -a 验证机器上已经安装openssl openssl version -a 运行结果: 2、生成...

osc_1psr53ow
23分钟前
7
0
计算机毕业设计之springboot+vue.js点餐小程序 点餐系统

功能 后台: 1. 超级管理员(具有该系统所有权限)登录 查看系统所有管理员 操作:可新添加管理员并分配系统已有角色; 可对已有管理员进行信息编辑; 可对除超管外的其他管理员账号禁用/启用...

osc_x4ot1joy
25分钟前
6
0
MATLAB数学建模

链接:https://pan.baidu.com/s/1WA2ltwyMZuKeo7OC9XAIvw 提取码:tmy2 记录matlab参加建模比赛时所用的书籍,避免忘记 链接:https://pan.baidu.com/s/1WA2ltwyMZuKeo7OC9XAIvw 提取码:tmy...

osc_oa6qrgun
25分钟前
6
0
Python中可以使用静态类变量吗? - Are static class variables possible in Python?

问题: Is it possible to have static class variables or methods in Python? Python中是否可以有静态类变量或方法? What syntax is required to do this? 为此需要什么语法? 解决方案:...

技术盛宴
56分钟前
17
0
如何在Android中以像素为单位获取屏幕尺寸 - How to get screen dimensions as pixels in Android

问题: I created some custom elements, and I want to programmatically place them to the upper right corner ( n pixels from the top edge and m pixels from the right edge). 我创建......

javail
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部