遊戲中常常會用到一些變換:node
遊戲中武器和角色在一個layer上,爲了效率,會考慮將bullet, effect和 PhysicsParticle分別放到不用的層上,對應的層上使用batchnode來提升效率spa
武器和PhysicsParticleLauncher(粒子發射器)綁定,發射的時候,會向PhysicsParticleLayer的武器相同的位置上生成一個物理粒子特效code
會常常用到convertToNodeSpace和convertToWorldSpace轉換座標blog
咱們加三個sprite,r0,r1,r2,遊戲
r0的父節點是layer, 父節點下座標(0,0,100,100)get
r1的父節點是r0,父節點下座標(0,0,100,100)it
r2的父節點是r1,父節點下座標(0,0,100,20)io
得到r2的世界座標,兩種方法----第一種方法,蠻好,懂原理,才知道這樣也能獲取世界座標!!!
1 // 得到r2的世界座標,兩種方法 2 // 方法1:以r2座標系爲起點,向根節點(世界座標)變換,座標必須爲(0,0) 3 Point p2world = r2->convertToWorldSpace(Point(0, 0)); 4 5 // 方法2:以r1座標系爲起點,向根節點(世界座標)變換,座標爲r2在父節點r1內的座標 6 p2world = r1->convertToWorldSpace(r2->getPosition()); 7 8 // 得到r2在r0座標系中的座標 9 // convertToNodeSpace要傳入的座標爲世界座標 10 Point pt = r0->convertToNodeSpace(p2world);