Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系
更新时间:2020年4月25日 17:41 点击:1414
cocos2d-x的坐标系很重要,想要学好该引擎,深入理解它的坐标体系很重要。注释写的很清楚了,对照上运行结果一块来看代码吧!
bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //opengl的坐标系和世界坐标系相同,都是以屏幕左下角为原点,向右为x轴的增加方向,向上为y轴的增加方向 //这里的世界指的是游戏世界 //屏幕坐标系是以左上角为原点,是我们熟悉的 //本地坐标系也叫节点坐标系,世界坐标系是相对于整体而言的,而本地坐标系是相对于父节点而言的,理解这点很重要 //CCDirector::sharedDirector()->convertToGL() 转换到OPENGL坐标系 //CCDirector::sharedDirector()->convertToUI() 转换到屏幕坐标系 //CCNode::convertToWorldSpace() 把本地坐标系转换到世界坐标系 //CCNode::convertToNodeSpace() 把世界坐标系转换到本地坐标系 //sprite1、sprite2的图片大小是100,100 CCSprite * sprite1 = CCSprite::create("image1.png"); sprite1->setPosition(ccp(100,100)); //将sprite2添加到sprite1节点中,这时候是以sprite1的左下角为原点,虽然sprite1的锚点是在它图片的中间 CCSprite * sprite2 = CCSprite::create("image2.png"); //setPosition中设置的坐标是sprite2的本地坐标 sprite2->setPosition(ccp(100,100)); sprite1->addChild(sprite2); //getPosition中获得的坐标也是sprite2的本地坐标 CCPoint point = sprite2->getPosition(); CCLog("point.x=%f,point.y=%f",point.x,point.y); //获得sprite2的opengl坐标系,屏幕坐标系,世界坐标系,本地坐标系 //convertToWorldSpace的传入参数是sprite2的节点坐标系(本地坐标),也就是setPosition中传入的参数,而convertToNodeSpace的传入参数是sprite2的世界坐标系,看清谁是调用者,传入的参数又是什么 CCPoint worldSpace = sprite1->convertToWorldSpace(point); CCPoint nodeSpace = sprite1->convertToNodeSpace(worldSpace); //以下俩个函数完成同样的功能,只不过这次的sprite2的坐标是基于sprite1的锚点的,而不是左下角了,所以我们传入了ccp(50,50) CCPoint worldSpaceAR = sprite1->convertToWorldSpaceAR(ccp(50,50)); CCPoint nodeSpaceAR = sprite1->convertToNodeSpaceAR(worldSpaceAR); //convertToUI中传入的是opengl坐标系,因为opengl坐标和世界坐标系是相同的,所以我们传入世界坐标 CCPoint ui = CCDirector::sharedDirector()->convertToUI(worldSpace); CCPoint opengl = CCDirector::sharedDirector()->convertToGL(ui); CCLog("opengl.x=%f,opengl.y=%f",opengl.x,opengl.y); CCLog("ui.x=%f,ui.y=%f",ui.x,ui.y); CCLog("worldspace.x=%f,worldspace.y=%f",worldSpace.x,worldSpace.y); CCLog("nodeSpace.x=%f,nodeSpace.y=%f",nodeSpace.x,nodeSpace.y); CCLog("worldspaceAR.x=%f,worldspaceAR.y=%f",worldSpaceAR.x,worldSpaceAR.y); CCLog("nodeSpaceAR.x=%f,nodeSpaceAR.y=%f",nodeSpaceAR.x,nodeSpaceAR.y); this->addChild(sprite1); bRet = true; } while (0); return bRet; }
上一篇: C语言泛型编程实例教程
相关文章
Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
这篇文章主要介绍了Cocos2d-x UI开发之CCControlColourPicker控件类使用实例,本文代码中包含大量注释来讲解CCControlColourPicker控件类的使用,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了Cocos2d-x Schedule定时器的使用实例,本文的讲解内容包含在代码注释中,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x中实现弹出对话框示例,注意本文代码中的注释,本文同时给出了效果图,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x学习笔记之Hello World!本文基于vs2010和C++语言开发,需要的朋友可以参考下...2020-04-25
使用C++进行Cocos2d-x游戏开发入门过程中的要点解析
这篇文章主要介绍了使用C++进行Cocos2d-x游戏开发入门过程中的要点解析,主要针对画面变化以及触摸响应方面,需要的朋友可以参考下...2020-04-25Cocos2d-x UI开发之CCControlButton控件类实例
这篇文章主要介绍了Cocos2d-x UI开发之CCControlButton控件类实例,本文代码中包含大量注释来讲解CCControlButton控件类的使用,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了Cocos2d-x中背景音乐和音效使用实例,注意本文中使用大量注释来说明背景音乐和音效的使用方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x UI开发之场景切换代码实例,cocos2d-x中的场景切换是通过导演类调用相应的方法完成的,本文通过代码和详细注释来说明,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x学习笔记之文本类,文本类是UI开发中经常使用的,本文用详细的代码注释讲解了文本类的使用,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x学习笔记之Hello World源码分析,接上一篇内容,本文着重分析源码文件,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x中CCEditBox文本输入框的使用实例,本文在代码中用大量注释讲解了CCEditBox的使用方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x人物动作类实例,本文用大量代码和图片讲解Cocos2d-x中的动作,代码中同时包含大量注释说明,需要的朋友可以参考下...2020-04-25
Cocos2d-x UI开发之CCControlSwitch控件类使用实例
这篇文章主要介绍了Cocos2d-x UI开发之CCControlSwitch控件类使用实例,本文代码中含大量注释讲解了CCControlSwitch控件类的使用,需要的朋友可以参考下...2020-04-25Cocos2d-x保存用户游戏数据CCUserDefault类使用实例
这篇文章主要介绍了Cocos2d-x保存用户游戏数据CCUserDefault类使用实例,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了Cocos2d-x UI开发之菜单类使用实例,本文的代码中含有详细注释,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x中获取系统时间和随机数实例,本文代码含有大量注释来讲解获取系统时间和随机数的方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x学习笔记之开发环境搭建,本文使用Visual Studio作为开发IDE,是不同于其它教程的,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Cocos2d-x 3.x入门教程(一):基础概念,本文讲解了Director、Scene、Layer、Sprite等内容,需要的朋友可以参考下...2020-04-25
Cocos2d-x UI开发之CCControlSlider控件类使用实例
这篇文章主要介绍了Cocos2d-x UI开发之CCControlSlider控件类使用实例,本文代码中包含大量注释讲解了CCControlSlider控件类的使用,需要的朋友可以参考下...2020-04-25cocos2d-x学习笔记之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex场景层介绍
这篇文章主要介绍了cocos2d-x学习笔记之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex场景层介绍,需要的朋友可以参考下...2020-04-25