cocos2d 坐标系统
2013-10-17 17:13
197 查看
为什么要学习坐标系统
在游戏开发设计当中,往往会设置角色的位置 或者 移动物品 或者地图 ,都会涉及到坐标的概念,而不同的坐标系统他们的表示
方法又是不同的 ,对于不同的函数获取到的坐标的类型也是 不同的,我们 需要将得到的坐标转化为我们需要的坐标类型 ,所以要
了解学习坐标系统
如调用CCNode类的setPosition函数,它使用的就是GL坐标系,而在处理触摸时间时CCTouch对象的坐标就是屏幕坐标。
知识普及
1.在几何体系中通常使用“笛卡尔”坐标系来描述坐标,就像下图展示的那样,通过左手或是右手来描述坐标系。
游戏开发中的坐标系统概念
1 游戏开发中涉及到有关坐标的概念有如下:
屏幕坐标系(UI坐标系)
openGL坐标系/cocos2d坐标系
DirectX坐标系
世界坐标系
本地坐标系
锚点
前3种 是坐标系统的分类 表示不同的坐标
后3种 是描述坐标与坐标之间的关系的
------------------------------------------------------------------------------------------------------------------------------------
屏幕坐标系(UI坐标系)
通常使用的UI坐标系定义如下:
屏幕左上角就是坐标系原点(0,0);x坐标从左向右增量变换,y坐标从上向下增量变换,如下图所示:
------------------------------------------------------------------------------------------------------------------------------------
OpenGL坐标系 、cocos2d坐标系
使用的是右手“笛卡尔”坐标系。
在2D游戏世界中,只使用到x和y坐标。
屏幕左下角是坐标系的原点(0,0);
x坐标从左向右增量变换;y坐标从下向上增量变换。
cocos2d就是使用的是OpenGL坐标系
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
以下
是描述坐标与坐标之间关系的,并不是一种坐标类型
世界坐标
世界坐标系和GL坐标系一致,原点在屏幕左下角,x轴向右,y轴向上。世界坐标就是所谓的绝对坐标,所有的对象虽然都有自己的本地坐标系,但这些对象同样的在世界坐标系中也有一个坐标,它建立了描述其他坐标系所需要的参考标准。
锚点
作为位置的参考点
------------------------------------------------------------------------------------------------------------------------------------
cocos2d-x中的坐标
1 cocos2d-x游戏开发中主要涉及到 屏幕坐标 和cocos2d坐标 ,两者区别如下
屏幕坐标
cocos2d坐标
由于cocos2d-x使用的是opengl渲染引擎,那么GL坐标系就不和屏幕坐标系重合,这是要注意的一点。因此,当我们调用了一个屏幕响应事件时,如ccTouchEnded(CCTouch* touch, CCEvent* event);
此时我们CCPoint location = touch->locationInView(touch->View)返回点击处在屏幕坐标系的位置,而不是GL坐标系。因此就有将屏幕坐标系转换成GL坐标系的函数。
CCPoing convertedLocation = CCDirector::sharedDirector()->convertToGL(location);
2 cocos2d中的锚点默认为该对象的中点
每个继承自CCNode的子类都有一个anchorpoint的属性
当决定放置位置和旋转中心时,均是以anchorpoint作为参照的
3 tile地图中的坐标是以左上角为(0,0),x向右递增 ,y向下递增 所以在将cocos2d坐标转化到tile地图相对应的坐标的时候,y坐标要注意转化
------------------------------------------------------------------------------------------------------------------------------------
2 本地坐标/世界坐标的转化
------------------------------------------------------------------------------------------------------------------------------------
致谢 !
参考文章如下:
http://www.cnblogs.com/lhming/archive/2012/07/01/2572272.html
http://blog.163.com/zjf_to/blog/static/201429061201292193855498/
http://blog.csdn.net/go_to_learn/article/details/8053435
http://blog.csdn.net/liuyu832/article/details/9249523
在游戏开发设计当中,往往会设置角色的位置 或者 移动物品 或者地图 ,都会涉及到坐标的概念,而不同的坐标系统他们的表示
方法又是不同的 ,对于不同的函数获取到的坐标的类型也是 不同的,我们 需要将得到的坐标转化为我们需要的坐标类型 ,所以要
了解学习坐标系统
如调用CCNode类的setPosition函数,它使用的就是GL坐标系,而在处理触摸时间时CCTouch对象的坐标就是屏幕坐标。
知识普及
1.在几何体系中通常使用“笛卡尔”坐标系来描述坐标,就像下图展示的那样,通过左手或是右手来描述坐标系。
游戏开发中的坐标系统概念
1 游戏开发中涉及到有关坐标的概念有如下:
屏幕坐标系(UI坐标系)
openGL坐标系/cocos2d坐标系
DirectX坐标系
世界坐标系
本地坐标系
锚点
前3种 是坐标系统的分类 表示不同的坐标
后3种 是描述坐标与坐标之间的关系的
------------------------------------------------------------------------------------------------------------------------------------
屏幕坐标系(UI坐标系)
通常使用的UI坐标系定义如下:
屏幕左上角就是坐标系原点(0,0);x坐标从左向右增量变换,y坐标从上向下增量变换,如下图所示:
------------------------------------------------------------------------------------------------------------------------------------
OpenGL坐标系 、cocos2d坐标系
使用的是右手“笛卡尔”坐标系。
在2D游戏世界中,只使用到x和y坐标。
屏幕左下角是坐标系的原点(0,0);
x坐标从左向右增量变换;y坐标从下向上增量变换。
cocos2d就是使用的是OpenGL坐标系
------------------------------------------------------------------------------------------------------------------------------------
DirectX坐标系
DirectX坐标系使用的是左手“笛卡尔”坐标系。 与cocos2d的区别就是z轴的方向,其他的一样------------------------------------------------------------------------------------------------------------------------------------
以下
是描述坐标与坐标之间关系的,并不是一种坐标类型
世界坐标
世界坐标系和GL坐标系一致,原点在屏幕左下角,x轴向右,y轴向上。世界坐标就是所谓的绝对坐标,所有的对象虽然都有自己的本地坐标系,但这些对象同样的在世界坐标系中也有一个坐标,它建立了描述其他坐标系所需要的参考标准。
本地坐标(节点坐标)
和特定节点相关联的坐标系。每个节点都有独立的坐标系。每当节点移动或改变方向时,和该节点关联的坐标系也随着移动或改变方向。CCNode类设置位置就是父节点的节点坐标系。其方向和OpenGL坐标系的方向也一致锚点
作为位置的参考点
------------------------------------------------------------------------------------------------------------------------------------
cocos2d-x中的坐标
1 cocos2d-x游戏开发中主要涉及到 屏幕坐标 和cocos2d坐标 ,两者区别如下
屏幕坐标
cocos2d坐标
由于cocos2d-x使用的是opengl渲染引擎,那么GL坐标系就不和屏幕坐标系重合,这是要注意的一点。因此,当我们调用了一个屏幕响应事件时,如ccTouchEnded(CCTouch* touch, CCEvent* event);
此时我们CCPoint location = touch->locationInView(touch->View)返回点击处在屏幕坐标系的位置,而不是GL坐标系。因此就有将屏幕坐标系转换成GL坐标系的函数。
CCPoing convertedLocation = CCDirector::sharedDirector()->convertToGL(location);
2 cocos2d中的锚点默认为该对象的中点
每个继承自CCNode的子类都有一个anchorpoint的属性
当决定放置位置和旋转中心时,均是以anchorpoint作为参照的
3 tile地图中的坐标是以左上角为(0,0),x向右递增 ,y向下递增 所以在将cocos2d坐标转化到tile地图相对应的坐标的时候,y坐标要注意转化
------------------------------------------------------------------------------------------------------------------------------------
常用坐标转化情景
1 屏幕坐标/cocos2d坐标 的转化2 本地坐标/世界坐标的转化
------------------------------------------------------------------------------------------------------------------------------------
致谢 !
参考文章如下:
http://www.cnblogs.com/lhming/archive/2012/07/01/2572272.html
http://blog.163.com/zjf_to/blog/static/201429061201292193855498/
http://blog.csdn.net/go_to_learn/article/details/8053435
http://blog.csdn.net/liuyu832/article/details/9249523
相关文章推荐
- Cocos2d-x 详解坐标系统
- 【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;
- cocos2d-html5学习笔记(三)--cocos2d中的坐标系统
- 学习3-Cocos2D-X坐标系统
- Cocos2d-x 详解坐标系统
- cocos2d-x开发记录:二,基本概念(动作,动画,坐标系统)
- 【Cocos2d-x-基础概念】坐标系统
- cocos2d-x坐标系统
- Cocos2d-x 详解坐标系统
- Cocos2d-x的坐标系统
- cocos2d-X学习之坐标系统
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十课:Cocos2D-X坐标系统1
- 【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;
- iPhone应用Cocos2D坐标系统设置
- (转载)cocos2d-X学习之坐标系统
- cocos2D坐标系统
- cocos2d中的坐标系统
- Cocos2d-x 详解坐标系统
- cocos2dx概要及开发技术------Cocos2d-x坐标系统
- cocos2d-x坐标系统