世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
来源:互联网 发布:mac下制作win10启动盘 编辑:程序博客网 时间:2024/05/21 07:47
1.bool HelloWorld::init() 2.{ 3. bool bRet = false; 4. do 5. { 6. 7. CC_BREAK_IF(! CCLayer::init()); 8. //opengl的坐标系和世界坐标系相同,都是以屏幕左下角为原点,向右为x轴的增加方向,向上为y轴的增加方向 9. //这里的世界指的是游戏世界 10. //屏幕坐标系是以左上角为原点,是我们熟悉的 11. 12. //CCDirector::sharedDirector()->convertToGL 转换到OPENGL坐标系 13. //CCDirector::sharedDirector()->convertToUI 转换到屏幕坐标系 14. //CCNode::convertToWorldSpace() 把本地坐标系转换到世界坐标系 15. //CCNode::convertToNodeSpace() 把世界坐标系转换到本地坐标系 16. 17. //sprite1、sprite2的图片大小事100,100 18. CCSprite * sprite1 = CCSprite::create("image1.png"); 19. sprite1->setPosition(ccp(100,100)); 20. 21. //将sprite2添加到sprite1节点中,这时候是以sprite1的左下角为原点,虽然sprite1的锚点是在它图片的中间 22. CCSprite * sprite2 = CCSprite::create("image2.png"); 23. //setPosition中设置的坐标是sprite2的本地坐标 24. sprite2->setPosition(ccp(100,100)); 25. sprite1->addChild(sprite2); 26. 27. //getPosition中获得的坐标也是sprite2的本地坐标 28. CCPoint point = sprite2->getPosition(); 29. CCLog("point.x=%f,point.y=%f",point.x,point.y); 30. 31. //获得sprite2的opengl坐标系,屏幕坐标系,世界坐标系,本地坐标系 32. 33. //convertToWorldSpace的传入参数是sprite2的节点坐标系(本地坐标),也就是setPosition中传入的参数,而convertToNodeSpace的传入参数是sprite2的世界坐标系 34. CCPoint worldSpace = sprite1->convertToWorldSpace(point); 35. CCPoint nodeSpace = sprite1->convertToNodeSpace(worldSpace); 36. 37. //一下俩个函数完成同样的功能,只不过这次的sprite2的坐标是基于sprite1的锚点的,而不是左下角了,所以我们传入了ccp(50,50) 38. CCPoint worldSpaceAR = sprite1->convertToWorldSpaceAR(ccp(50,50)); 39. CCPoint nodeSpaceAR = sprite1->convertToNodeSpaceAR(worldSpaceAR); 40. 41. //convertToUI中传入的是opengl坐标系,因为opengl坐标和世界坐标系是相同的,所以我们传入世界坐标 42. CCPoint ui = CCDirector::sharedDirector()->convertToUI(worldSpace); 43. CCPoint opengl = CCDirector::sharedDirector()->convertToGL(ui); 44. 45. CCLog("opengl.x=%f,opengl.y=%f",opengl.x,opengl.y); 46. CCLog("ui.x=%f,ui.y=%f",ui.x,ui.y); 47. CCLog("worldspace.x=%f,worldspace.y=%f",worldSpace.x,worldSpace.y); 48. CCLog("nodeSpace.x=%f,nodeSpace.y=%f",nodeSpace.x,nodeSpace.y); 49. CCLog("worldspaceAR.x=%f,worldspaceAR.y=%f",worldSpaceAR.x,worldSpaceAR.y); 50. CCLog("nodeSpaceAR.x=%f,nodeSpaceAR.y=%f",nodeSpaceAR.x,nodeSpaceAR.y); 51. 52. this->addChild(sprite1); 53. 54. bRet = true; 55. } while (0); 56. 57. return bRet; 58.} 01.bool HelloWorld::init() 02.{ 03. bool bRet = false; 04. do 05. { 06. 07. CC_BREAK_IF(! CCLayer::init()); 08. //opengl的坐标系和世界坐标系相同,都是以屏幕左下角为原点,向右为x轴的增加方向,向上为y轴的增加方向 09. //这里的世界指的是游戏世界 10. //屏幕坐标系是以左上角为原点,是我们熟悉的 11. 12. //CCDirector::sharedDirector()->convertToGL 转换到OPENGL坐标系 13. //CCDirector::sharedDirector()->convertToUI 转换到屏幕坐标系 14. //CCNode::convertToWorldSpace() 把本地坐标系转换到世界坐标系 15. //CCNode::convertToNodeSpace() 把世界坐标系转换到本地坐标系 16. 17. //sprite1、sprite2的图片大小事100,100 18. CCSprite * sprite1 = CCSprite::create("image1.png"); 19. sprite1->setPosition(ccp(100,100)); 20. 21. //将sprite2添加到sprite1节点中,这时候是以sprite1的左下角为原点,虽然sprite1的锚点是在它图片的中间 22. CCSprite * sprite2 = CCSprite::create("image2.png"); 23. //setPosition中设置的坐标是sprite2的本地坐标 24. sprite2->setPosition(ccp(100,100)); 25. sprite1->addChild(sprite2); 26. 27. //getPosition中获得的坐标也是sprite2的本地坐标 28. CCPoint point = sprite2->getPosition(); 29. CCLog("point.x=%f,point.y=%f",point.x,point.y); 30. 31. //获得sprite2的opengl坐标系,屏幕坐标系,世界坐标系,本地坐标系 32. 33. //convertToWorldSpace的传入参数是sprite2的节点坐标系(本地坐标),也就是setPosition中传入的参数,而convertToNodeSpace的传入参数是sprite2的世界坐标系 34. CCPoint worldSpace = sprite1->convertToWorldSpace(point); 35. CCPoint nodeSpace = sprite1->convertToNodeSpace(worldSpace); 36. 37. //一下俩个函数完成同样的功能,只不过这次的sprite2的坐标是基于sprite1的锚点的,而不是左下角了,所以我们传入了ccp(50,50) 38. CCPoint worldSpaceAR = sprite1->convertToWorldSpaceAR(ccp(50,50)); 39. CCPoint nodeSpaceAR = sprite1->convertToNodeSpaceAR(worldSpaceAR); 40. 41. //convertToUI中传入的是opengl坐标系,因为opengl坐标和世界坐标系是相同的,所以我们传入世界坐标 42. CCPoint ui = CCDirector::sharedDirector()->convertToUI(worldSpace); 43. CCPoint opengl = CCDirector::sharedDirector()->convertToGL(ui); 44. 45. CCLog("opengl.x=%f,opengl.y=%f",opengl.x,opengl.y); 46. CCLog("ui.x=%f,ui.y=%f",ui.x,ui.y); 47. CCLog("worldspace.x=%f,worldspace.y=%f",worldSpace.x,worldSpace.y); 48. CCLog("nodeSpace.x=%f,nodeSpace.y=%f",nodeSpace.x,nodeSpace.y); 49. CCLog("worldspaceAR.x=%f,worldspaceAR.y=%f",worldSpaceAR.x,worldSpaceAR.y); 50. CCLog("nodeSpaceAR.x=%f,nodeSpaceAR.y=%f",nodeSpaceAR.x,nodeSpaceAR.y); 51. 52. this->addChild(sprite1); 53. 54. bRet = true; 55. } while (0); 56. 57. return bRet; 58.}
0 0
- 世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
- 世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
- cocos2d-x 世界坐标系、屏幕坐标系、本地坐标系、opengl坐标系
- Cocos2d世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
- Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系
- 屏幕坐标系,世界坐标系
- Cocos2dx 世界、屏幕、openGL、本地等坐标系
- 世界坐标系与本地坐标系
- 世界坐标系VS 本地坐标系
- 坐标系
- 坐标系
- 坐标系
- 坐标系
- 坐标系
- 坐标系
- 坐标系
- 坐标系
- 坐标系
- 解决存入数据库乱码问题
- 在iOS上使用自签名的SSL证书
- 图的表示方式----邻接矩阵、邻接表
- 数据挖掘学习笔记(3)
- JPA注解
- 世界坐标系,本地坐标系,opengl坐标系,屏幕坐标系
- CentOS源代码编译到ksign-publickey.c时出现的问题及解决方法。
- QT 登录界面制作
- 有种朋友,很喜欢,却不忍动情
- ZOJ 3741 Eternal Reality
- C# 简单的读取数据Excel帮助类
- 2014年,趁着互联网金融P2P网贷未被监管,赚点小钱吧~
- android codeic编码色彩空间
- 最长递增子序列 O(NlogN)算法