COCOS2DX-游戏开发之三 坐标系

前端之家收集整理的这篇文章主要介绍了COCOS2DX-游戏开发之三 坐标系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

【COCOS2DX-游戏开发之三一】之 坐标系(下) convertToNodeSpace和convertToWorldSpace

标签convertToNodeSpaceconvertToWorldSpace坐标系
23701人阅读 评论(2) 收藏 举报
分类

游戏中经常会用到一些变换:@H_301_36@

游戏中武器和角色在一个layer上,为了效率,会考虑将bullet,effect和 PhysicsParticle分别放到不用的层上,对应的层上使用batchnode来提高效率@H_301_36@

武器和PhysicsParticleLauncher(粒子发射器)绑定,发射的时候,会向PhysicsParticleLayer的武器相同的位置上生成一个物理粒子特效@H_301_36@


@H_301_36@

会经常用到convertToNodeSpace和convertToWorldSpace转换坐标@H_301_36@


@H_301_36@

我们加三个sprite,r0,r1,r2,@H_301_36@

r0的父节点是layer,父节点下坐标(0,100,100)@H_301_36@

r1的父节点是r0,父节点下坐标(0,100)@H_301_36@

r2的父节点是r1,父节点下坐标(0,20)@H_301_36@


@H_301_36@

@H_301_36@

  1. boolHelloWorld::init()
  2. {
  3. //////////////////////////////
  4. //1.superinitfirst
  5. if(!Layer::init()){
  6. returnfalse;
  7. }
  8. //r0加入到根节点上(Layer)坐标(0,0)
  9. Sprite*r0=Sprite::create("data/pic/gun.png");
  10. r0->setAnchorPoint(Point(0.f,0.f));
  11. this->addChild(r0);
  12. //r1加入到r0上
  13. Sprite*r1=Sprite::create("data/pic/gun.png");
  14. r1->setAnchorPoint(Point(0.f,0.f));
  15. r1->setPosition(Point(100,0));
  16. r0->addChild(r1);
  17. //r2加入到r1上
  18. Sprite*r2=Sprite::create("data/pic/gun.png");
  19. r2->setAnchorPoint(Point(0.f,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> r2->setPosition(Point(100,20));
  20. r1->addChild(r2);
  21. }

@H_301_36@

如何将r2的坐标转换为世界坐标?@H_301_36@

如何将r2的坐标转换为r0的局部坐标?@H_301_36@

@H_301_36@



方法如上:

工作原理详见cocos2dx代码



@H_301_36@ cocos2d-x 坐标系详解: http://www.tairan.com/archives/3367


@H_301_36@ 【cocos2dx游戏开发】之坐标系(一) 点击这里

猜你在找的Cocos2d-x相关文章