全部節點都擁有一個攝像機類CCCamera。只有經過攝像機類,節點纔會被渲染出來。當節點發生縮放旋轉和位置變化的時候,都須要覆蓋CCCamera 類,讓這個節點經過CCCamera 類從新渲染。函數
注意:CCNode 類裏有些方法能夠實現縮放、旋轉和位置變化,當使用攝像機類實現這些的時候,那些方法就不能同時使用了。使用攝像機類也不能夠同時使用世界座標了。spa
CCCamera 類的繼承關係以下:rest
CCCamera -->CCObject-->CCCopying。code
Cocos2D-x 中的CCCamera 類使用OpenGL 的gluLookAt 函數來設置位置。gluLookAt 函數有三組關於座標的參數,其中「Eye」系列的x、y、z 座標參數是視角的位置,而「Center」系列的x、y、z 座標參數是所視目標的座標位置,「Up」系列的x、y、z 座標參數是攝像機方向的向量座標。關於這三個參數,你能夠理解爲以「Eye」爲起點,沿着「Up」方向,朝「Center」看。對象
注意:這裏須要說明的是,在三維效果中,使用CCCamera 類是能夠的,可是若是你只須要一些二維特效的話,那麼更推薦跟隨類CCFollow。blog
主要成員函數:繼承
init:初始化。get
restore:重置爲初始位置。it
locate:使用OpenGL 的gluLookAt 函數來設置。class
setEyeXYZ:設置視角位置座標。
getEyeXYZ:得到視角位置座標。
setCenterXYZ:設置目標位置座標。
getCenterXYZ:得到目標位置座標。
setUpXYZ:設置攝像機方向座標。
getUpXYZ:得到攝像機方向座標。
CCCamera 類能夠實現節點對象的縮放旋轉:
1 //聲明精靈類對象實例
2 CCNode *sprite; 3 //聲明攝像機類對象實例
4 CCCamera *cam; 5 //建立精靈類對象
6 sprite = CCSprite::createWithSpriteFrameName("sprite.png"); 7 // 得到攝像機
8 cam = sprite->getCamera(); 9 // 設置z 軸位置
10 cam->setEyeXYZ(0, 0, 100);