Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系

Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系,第1张

概述这篇文章主要介绍了Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系,本文用代码和注释讲解了Cocos2d-x中的坐标体系,需要的朋友可以参考下  cocos2d-x的坐标系很重要,想要学好该引擎,深入理解它的坐标体系很重要。注释写的很清楚了,对照上运行结果一块来看代码吧! ? bool HelloWorld::init(){ bool bRet = fals 这篇文章主要介绍了Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系,本文用代码和注释讲解了Cocos2d-x中的坐标体系,需要的朋友可以参考下

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));   //<span >将Vec2转换成世界空间坐标系。结果以Points为单位。 坐标按相对于锚点来处理。</span>        CCPoint nodeSpaceAR = sprite1->convertToNodeSpaceAR(worldspaceAR);   //<span >将Vec2转换成节点(局部)空间坐标系.结果以Points为单位。 坐标按当作相对于锚点来处理。</span>         //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;}
总结

以上是内存溢出为你收集整理的Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系全部内容,希望文章能够帮你解决Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1070286.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存