cocos2dx基础——坐标系

本文介绍了cocos2dx中的各种坐标系,包括屏幕坐标系、OpenGL坐标系、世界坐标系和本地坐标系,详细讲解了它们的特点和转换方法。还提到了锚点的概念及其在坐标转换中的作用。

常见坐标系分为屏幕坐标系、OpenGL坐标系、世界坐标系、本地坐标系


屏幕坐标系和cocos2d坐标系

标准屏幕坐标系使用和OpenGL不同的坐标系,而Cocos2d则使用和OpenGL相同的坐标系。

iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x向右,y向下。
Cocos2d坐标系和OpenGL坐标系一样,原点为屏幕左下角,x向右,y向上。
屏幕坐标系和cocos2d坐标系
—— [ cocos官网 ]

世界坐标系

世界坐标系也叫绝对坐标系,世界坐标也就是绝对坐标,是相对于整个游戏而言的。

例如,整个地球就是一个世界坐标系,我们在自己的国家拥有自己的本地坐标,同时,我们相对于世界的坐标就是世界坐标系。

本地坐标系

也叫节点坐标系,相对于一个对象的父对象而言。在调用setPosition( )函数设置对象位置时使用的就是本地坐标,getPosition()也是获取当前节点的本地坐标。
相对于其父对象而言,原点在父对象的左下角,x轴向右,y轴向上。
例如:

auto layer = Layer::create();
auto sprite = Sprite::create("HelloWorld.png");
layer->addChild(sprite,1);

这里layer就是父对象,sprite就是子对象。
如果layer移动,那么sprite也跟着移动

锚点

锚点指定了贴图上和所在节点的原点重合的点的位置。
锚点的默认值是(0.5,0.5),表示锚点位于贴图长度乘0.5和宽度乘0.5的位置。
关于锚点有4个方法:

setPosition()//以节点左下角为原点

getAnchorPoint()//返回锚点的位置
setAnchorPoint()//设置锚点的位置

setIsRelativeAnchorPoint(bool)//将该节点的锚点设为节点的原点
getIsRelativeAnchorPoint()//返回是否将该节点的锚点设为节点的原点

坐标系之间的相互转换

屏幕坐标系和OpenGL坐标系转换

函数调用

//屏幕坐标系转换成OpenGL坐标系
Director::convertToGL(Point *);
//OpenGL坐标系转换成屏幕坐标系
Director::convertToUI(Point *);

使用场合

触摸屏幕时,将触摸点转换成OpenGL坐标系,来判断和是否点到了某个控件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值