遊戲中經常會用到一些變換:
遊戲中武器和角色在一個layer上,為了效率,會考慮將bullet, effect和 PhysicsParticle分別放到不用的層上,對應的層上使用batchnode來提高效率
武器和PhysicsParticleLauncher(粒子發射器)綁定,發射的時候,會向PhysicsParticleLayer的武器相同的位置上生成一個物理粒子特效
會經常用到convertToNodeSpace和convertToWorldSpace轉換坐標
我們加三個sprite,r0,r1,r2,
r0的父節點是layer, 父節點下坐標(0,0,100,100)
r1的父節點是r0,父節點下坐標(0,0,100,100)
r2的父節點是r1,父節點下坐標(0,0,100,20)
- bool HelloWorld::init()
- {
- //////////////////////////////
- // 1. super init first
- if ( !Layer::init() ) {
- return false;
- }
- // r0加入到根節點上(Layer) 坐標(0,0)
- Sprite* r0 = Sprite::create("data/pic/gun.png");
- r0->setAnchorPoint(Point(0.f, 0.f));
- this->addChild(r0);
- // r1加入到r0上
- Sprite* r1 = Sprite::create("data/pic/gun.png");
- r1->setAnchorPoint(Point(0.f, 0.f));
- r1->setPosition(Point(100, 0));
- r0->addChild(r1);
- // r2加入到r1上
- Sprite* r2 = Sprite::create("data/pic/gun.png");
- r2->setAnchorPoint(Point(0.f, 0.f));
- r2->setPosition(Point(100, 20));
- r1->addChild(r2);
- }
如何將r2的坐標轉換為世界坐標?
如何將r2的坐標轉換為r0的局部坐標?
- // 獲得r2的世界坐標,兩種方法
- // 方法1:以r2坐標係為起點,向根節點(世界坐標)變換,坐標必須為(0,0)
- Point p2world = r2->convertToWorldSpace(Point(0, 0));
- // 方法2:以r1坐標係為起點,向根節點(世界坐標)變換,坐標為r2在父節點r1內的坐標
- p2world = r1->convertToWorldSpace(r2->getPosition());
- // 獲得r2在r0坐標系中的坐標
- // convertToNodeSpace要傳入的坐標為世界坐標
- Point pt = r0->convertToNodeSpace(p2world);
沒有留言:
張貼留言