Cocos2d-x 3.x 之 坐标系
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
继续夯一下基础, 今天研究下——坐标系 内容: > UI坐标 > OpenGLzuobiao > 世界坐标和模型坐标
1.关于 坐标系 在图形图像和游戏应用开发中坐标系是非常重要的。 在 Android 和 iOS等平台应用开发的时候,它们所使用的二维坐标系的 原点 是在 左上角。 But,在Cocos2d-x坐标系中 原点 是在 左下角 的,而且Cocos坐标系又分为 世界坐标系 和 模型坐标系。
2.UI坐标 UI坐标 就是指 Android 和 iOS等应用开发时候,所使用的坐标系, 就像:
UI坐标 的原点是在 左上角,x轴右向为正,y轴下向为正。 上面也说过,cocos2d-x默认坐标系并不是这样的,但是并非全不是, 在触摸事件的时候,触摸到的坐标,就是UI坐标, 就像这样获得的: Vec2 touchLocation = touch -> getLocationInView(); 当然,我们也可以进行坐标转换,将它转换成cocos2d-x的默认坐标: Vec2 touchLocation2 = Director::getInstance()->convertToGL(touchLocation);
3.OpenGL坐标 OpenGL坐标是三维坐标, 由于cocos2d-x底层采用OpenGL渲染,因此默认坐标就是OpenGL坐标,只不过只采用两维。 若不考虑z轴,OpenGL坐标的原点在 左下角:
PS:三维坐标根据z轴指向不同分为 左手坐标(z轴正向指向屏幕内) 和 右手坐标(z轴正向指向屏幕外)。 OpenGL坐标是右手坐标,Microsoft平台的 Direct3D是左手坐标。
4.世界坐标 与 模型坐标 因为 OpenGL坐标 可以分为世界坐标和模型坐标, 而模型坐标,可以以B点为参照物,就是(-1,1)
既然有这两个不同参照物的坐标,肯定需要互相转换,
在Cocos2d-x中,每个Node都有一个锚点的存在, // 添加一个Button auto node1 = Sprite::create("button1.png"); node1->setAnchorPoint(Vec2(0.5,0.5)); node1->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2)); this->addChild(node1,0); ? 左上角 // 添加一个Button auto node1 = Sprite::create("button1.png"); node1->setAnchorPoint(Vec2(0.0,1.0)); node1->setPosition(Vec2(visibleSize.width/2,0); 两个不同的坐标系之间的转换,还有相对于锚点的转换:
******************************************** (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |