Cocos2d-x學習筆記(九)之 攝像機類CCCamera


  所有節點都擁有一個攝像機類CCCamera。只有通過攝像機類,節點才會被渲染出來。當節點發生縮放旋轉和位置變化的時候,都需要覆蓋CCCamera 類,讓這個節點通過CCCamera 類重新渲染。

  注意:CCNode 類里有些方法可以實現縮放、旋轉和位置變化,當使用攝像機類實現這些的時候,那些方法就不能同時使用了。使用攝像機類也不可以同時使用世界坐標了。

  CCCamera 類的繼承關系如下:

  CCCamera -->CCObject-->CCCopying。

  Cocos2D-x 中的CCCamera 類使用OpenGL 的gluLookAt 函數來設置位置。gluLookAt 函數有三組關於坐標的參數,其中“Eye”系列的x、y、z 坐標參數是視角的位置,而“Center”系列的x、y、z 坐標參數是所視目標的坐標位置,“Up”系列的x、y、z 坐標參數是攝像機方向的向量坐標。關於這三個參數,你可以理解為以“Eye”為起點,沿着“Up”方向,朝“Center”看。

  注意:這里需要說明的是,在三維效果中,使用CCCamera 類是可以的,但是如果你只需要一些二維特效的話,那么更推薦跟隨類CCFollow。

  主要成員函數:

  init:初始化。

  restore:重置為初始位置。

  locate:使用OpenGL 的gluLookAt 函數來設置。

  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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM