cocos2dx中坐标系

CCNode类的setPosition,getPosition函数如果是一个Node的Child则获取的坐标就是该Node的本地坐标

另一个关键问题就是在cocos2d-x里就是各种对象的大小问题。因为在cocos2d-x里CCNode对象有缩放的方法setScaleX和setScaleY。所以在获取对象大小的时候必须根据情况明确指定获取对象原始大小,还是缩放后的大小。当然cocos2d-x里提供了对应函数来完成这些操作:

getContentSize函数来获得节点原始的大小。只是逻辑尺寸,不是像素;

boundingBox函数来获得经过缩放和旋转之后的外框盒大小。

getContentSizeInPixels获得的是像素点大小

像素点和逻辑点关系:逻辑点大小 = 像素大小/contentScaleFactor.

getVisibleSize:获得视口(可视区域)的大小,若是DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。

getVisibleOrigin:表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致。

坐标转换:

GL坐标系,cocos2d-x默认坐标系:

CCPoint CCDirector::convertToGL(const CCPoint& uiPoint)

{

CCSize s = m_obWinSizeInPoints;

float newY = s.height - uiPoint.y;

}

屏幕坐标系:   默认原点在左上角

CCPoint CCDirector::convertToUI(const CCPoint& glPoint)

{

CCSize winSize = m_obWinSizeInPoints;

float oppositeY = winSize.height - glPoint.y;

return ccp(glPoint.x,oppositeY);

}

两种坐标的X方向没有变,只变了Y方向,cocos2d-x里默认的GL坐标系,即左下角为原点ccp(0.0f,0.0f)

时间: 2024-11-04 16:26:48

cocos2dx中坐标系的相关文章

关于Cocos2d-x中坐标系的种类和转换

一.UI坐标系 在进行iOS或者Android界面开发时,它的坐标系规则如下图所示: 原点坐标(x=0, y=0)位于左上角: X轴从屏幕最左边开始,由左向右渐增: Y轴坐标从屏幕最上方开始,由上向下渐增 二.Cocos2d-x坐标系 Cocos2d-x坐标系是这里的重点,也是我们开发时考虑的最多的.由于Cocos2d-x是基于OpenGL和OpenGL ES的.该坐标系的规则如下: 原点坐标(x=0, y=0)位于左下角: X轴从屏幕最左边开始,由左向右渐增: Y轴从屏幕最下方开始,由下向上渐

Cocos2d-x中的坐标系

绘图坐标系.它是最常见的坐标系,与OpenGL采用的坐标系相同,以左下角为原点,向右为x轴正方向,向上为y轴正方 向,如图 3-1 所示.在 Cocos2d-x 中,一切绘图相关的操作都使用绘图坐标系,如游戏元素中的 Position 和 AnchorPoint 等属性. 纹理坐标系.纹理坐标系以左上角为原点,向右为x轴正方向,向下为y轴正方向,如图3-2所示.在Cocos2d-x中,只 有从纹理中截取部分矩形时才使用这个坐标系,如 CCSprite 的 TextureRect 属性. 简单地接

cocos2d-x 中的坐标系

cocos2d-x 中的坐标系是笛卡尔坐标系,向右为 x 轴正方向,向上为 y 轴正方向,以像素为单位 原点在屏幕左下角的坐标系叫世界坐标系,是整个游戏中的根基,直接添加到场景中的节点,设置的位置都是指世界坐标系,getPosition 返回的都是世界坐标系 每个节点都可以当做一个坐标系,节点坐标系的原点位于其内容的左下角,节点添加子节点时, 子节点设置的位置,按照父节点的坐标系,当父节点的坐标变化时,子节点也做相同的变化,即子节点相对父节点不变:节点坐标系是坐标系中的坐标系,分析某个节点坐标一

cocos2dx中的CCRect的用法

CCRect是cocos2dx中的一块矩形区域 常用于碰撞检测及渲染时限定纹理的大小 CCRect rect=spr.boundingBox(); CCRect rect=CCRect(0,0,spr.width,spr.height); CCRect rect=CCRect(spr->boundingBox().origin.x,spr->boundingBox().origin.y,spr.size().width,spr.size().height); //boundingBox().o

【Cocos2d-x】坐标系和图层

在Cocos2D-X中,存在四种坐标系: 1.OpenGL坐标系:该坐标系原点在屏幕左下角.x轴向右,y轴向上.这也就是cocos2dx中用到的坐标系所以没啥好说的. 2.屏幕坐标系(UIKit坐标):该坐标系的原点在屏幕左上角,x轴向右,y轴向下.事实上和OpenGL坐标系的区别也就是y轴的方向拉.如果游戏场景的分辨率为(500,500),当中一个点的坐标为(200,200),那么它在OpenGL坐标系中的坐标还是(200,200),在屏幕坐标系中则要倒过来,则为(200,500-200).

Cocos2d-X中的坐标

在Cocos2d-x中坐标可以分成四种: 1.GL坐标体系:GL坐标体系左下角为坐标原点,X轴向右,Y轴向上 2.UI坐标体系:UI坐标体系左上角为坐标原点,X轴向右,Y轴向上. 3.世界坐标体系:是窗口的坐标体系,它是GL坐标体系,它是左下角为坐标原点,X轴向右,Y轴向上. 4. 结点坐标体系:是Node的坐标体系,它是GL坐标体系,和世界坐标体系不同的是,它的原点是结点的左下角, 当一个结点调用SetPosition时,使用的参数是它的父结点(渲染树)的坐标体系 CCLayer默认大小和窗口

cocos2d-x中的Tiled地图

cocos2d-x中的瓦片地图是通过tiledMap软件制作的,存档格式是.tmx格式.此软件的使用步骤简单总结如下: (1)制作瓦片地图 1 打开软件,软件界面如下图. 2. 新建地图(文件->新文件) 3.增加新图块(地图->新图块) 4. 制作地图.在图层区域,单击右键可以新建图层和对象,上面的工具栏中的工具,制作地图. 5 导出,记住格式一定是tmx格式 说明 有时候,在使用地图的时候,可能会报找不到资源的错误,可以使用xcode打开地图文件,将资源路径修改如图所示形式. 在地图完成后

cocos2dx中的坐标系统

一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下.iOS的屏幕触摸事件CCTouch传入的位置信息使用的是该坐标系.因此在Cocos2D-x中对触摸事件做出响应前,需要首先把触摸点转化到OpenGL坐标系.这一点在后面的触屏信息中会详细介绍,可以使用CCDirector的convertT

cocos2dx中的设计分辨率与屏幕适配策略

1.首先明确几个概念: 设计分辨率:designResolution,即资源图片的设计尺寸,即美工给你的资源图片的大小,比如(641*964) 屏幕分辨率:又叫帧的大小,glview->setFrameSize(480,640); 这是指你的设备的屏幕的大小,通常手机的屏幕分辨率也就那么几种固定的大小,如480*320,1024*768,等等,在win32模拟器,或其他模拟器中,也指模拟器屏幕的大小. 2.疑问,既然图片是为手机屏幕服务的,干嘛搞这么多概念,直接一切以屏幕为中心不就得了,所有资源