cocos2d-x手机游戏开发笔记(二)--坐标系
来源:互联网 发布:网络慈善活动策划方案 编辑:程序博客网 时间:2024/05/18 03:21
http://cocos2d-x.org/projects/cocos2d-x/wiki/Coordinate_System
介绍不同的坐标体系
笛卡尔坐标系
你可能在以前的几何课里学到了笛卡尔坐标系。如果忘记了,下面的图片可以很快让你想起来。
以下三种坐标系将在以后的手机游戏中用到。
UI坐标系
这个坐标系在 IO/Android/Windows SDK平台中的共性:
- 原点(x=0,y=0)在屏幕的左上角。
- x轴线沿着屏幕向右边延伸。
- y轴线沿着屏幕向下延伸。
如图:
Direct3D 坐标系
DirectX 采用的是左手式的笛卡尔坐标系。
OpenGL 和 Cocos2d 坐标系
Cocos2d-x/-html5/-iphone 采用的坐标系与OpenGL一致。采用的是右手式的笛卡尔坐标系。
在2D游戏世界里,我们只需要X与Y轴所构成的坐标系。所以,在cocos2d中:
- 坐标系原点(x=0,y=0)是屏幕的左下角,屏幕所在就是右手笛卡尔坐标系的第一象限。
- X轴沿着屏幕往右边延伸。
- Y轴沿着屏幕往上延伸。
下面图片能更好的阐明cocos2d坐标系:
注意该坐标系与世界坐标系和DirectX坐标系的区别。
父节点与子节点
每个继承CCNode的类都会有一个锚点属性。当要显示一个对象时(sprite、layer等)元素时,cocos2d将根据对象的位置和锚点两个属性去绘制。如果该对象需要旋转角度,那它的旋转是以锚点为定点的。
创建一个灰色的节点作为父节点,蓝色的作为子节点,设置父节点的位置为(100,100),子节点的锚点为(0.5,0.5),即圆的中心 。
我们设置了子节点的位置为(0,0),父节点的位置为(100,100),因而,子节点的位置如图:
锚点的介绍:
见此文: http://blog.csdn.net/o_longzhong/article/details/9493215
getVisibleSize、getVisibleOrigin 与 getWinSize
getVisibleSize获取OpenGL视图的可视界面的尺寸(像素),如果没有调用CCEGLView::setDesignResolutionSize()函数,这个值与用getWinSize获取的值是一样的。
getVisibleOrigin获取OpenGL视图的原点。点击查看更多信息Multi resolution support。
转换坐标系
convertToNodeSpace:
当你有一个基于小贴块地图的游戏,但是地图很大。covertToNodeSpace可以将OpenGL坐标系的点转换为.tmx地图的坐标。
下图中node1的锚点为(0,0),node2的锚点为(1,1)。
当调用CCPoint point = node1->convertToNodeSpace(node2->getPosition()); 将转换node2的坐标相对于node1的坐标原点的坐标位置,这里node2的位置就是(-25,-60)。(就是把世界坐标系转换到当前节点的本地坐标系中)
convertToWorldSpace:
convertToWorldSpace(const CCPoint)将当前节点的本地坐标系转化为世界坐标系。它总是返回节点在视图中的位置。当需要移动或缩放地图才能看到节点时,而又想获取这个节点的taps(不懂),这个函数很有用。
一般是父节点调用这个方法,来返回它的子节点在世界坐标系中的位置。因此,如果没有子节点,一般节点不会调用这个方法。
例如:1CCPoint point = node1->convertToWorldSpace(node2->getPosition());
- cocos2d-x手机游戏开发笔记(二)--坐标系
- Cocos2d-x手机游戏开发教程(二)…
- cocos2d-x手机游戏开发笔记(一)--概念介绍
- 【cocos2d-x游戏开发】坐标系详解
- 《cocos2d-x游戏开发之旅》学习笔记(二)
- Cocos2d-x手机游戏开发C编程基础---笔记一
- cocos2d-x游戏开发实例(二)
- Cocos2d-X游戏开发(二)
- [cocos2d-x 2.0+游戏开发]鼠标事件以及坐标系
- cocos2d-x学习笔记(2) 坐标系
- Cocos2d-x手机游戏开发教程(一)…
- Cocos2d-x手机游戏开发教程(三)…
- 读《cocos2d-x手机游戏开发》有感(上)
- Cocos2d-x手机游戏开发视频教程
- 【Cocos2d-x】开发基础-Cocos2d-x坐标系
- 【cocos2d-x游戏开发】 从零单排之(二)
- cocos2d-x游戏开发(二)开始菜单续
- cocos2d-x游戏开发(二)开始菜单
- VMWare安装Ubuntu 12.04开启虚拟机的Unity Mode模式
- C语言函数指针基础
- 内核态基本套接字编程
- UVa10250 – The Other Two Trees
- Qt学习之对话框与主窗口的创建
- cocos2d-x手机游戏开发笔记(二)--坐标系
- 剑指Offer算法实现之十九:二叉树的镜像
- Threads in Spring
- 基于Tomcat7、Java、WebSocket的服务器推送聊天室
- Windows平台基于多进程的echo服务器简单实现
- 每日一题(62) - 和为s的连续正整数序列
- Elastisearch相关
- KeyCode键码值表
- .NET框架设计—常被忽视的框架设计技巧