文档章节

Cocos2d-x-v3坐标体系

珲少
 珲少
发布于 2015/08/03 23:06
字数 846
阅读 266
收藏 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

 

© 著作权归作者所有

共有 人打赏支持
珲少

珲少

粉丝 872
博文 390
码字总数 469911
作品 0
上海
iOS工程师
私信 提问
Cocos2d-x-v3动作体系

Cocos2d-x-v3动作体系 cocos2d-x-v3版本v2的版本有的很大的改动,最直观的是在一些函数的改动和类名的改动上,首先以CC开头的类,都不再使用CC。在我个人的理解上,原来的cocos2d-x是完全从i...

珲少
2015/08/05
0
0
跟着石头哥哥学cocos2d-x(二)---2dx跨平台编译以及2dx概述

ps:目录是2dx概述!!! 上一节中我大概简述了2dx引擎环境的搭建,在交叉编译一概而过,这一节我将详细说下这方面的内容, 有人提出不用cygwin来编译,用adt毫无压力,额 我只想说 adt从我搞...

石头哥哥
2013/11/13
0
8
忍者无敌-实例讲解Cocos2d-x瓦片地图

实例比较简单,如图所示,地图上有一个忍者精灵,玩家点击他周围的上、下、左、右,他能够向这个方向行走。当他遇到障碍物后是无法穿越的,障碍物是除了草地以为部分,包括了:树、山、河流等...

智捷课堂
2014/09/19
0
1
【Cocos2d-x-基础概念】坐标系统

Cocos2d-x-基础概念-坐标系统 不同坐标系的介绍 笛卡尔坐标系 UI坐标系 在ios、安卓、wp一般的UI坐标布局中 原点是在左上角 x从左到右递增 y从顶到底递增 像这样 Direct3d DirectX中采取了笛...

王选易
2013/05/21
0
0
cocos2d坐标系

cocos2d坐标系 分类: cocos2d 坐标系 2011-10-10 23:12 496人阅读 评论(0) 收藏 举报 cocos2d支持以下几种坐标系: 1.屏幕坐标系 原点在左上角,X轴向右,Y轴向下。 2.GL坐标系 原点在左下...

晨曦之光
2012/05/28
136
0

没有更多内容

加载失败,请刷新页面

加载更多

租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
29分钟前
1
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
2
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
1
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部