三、螢幕座標系 & opengl座標系
四、世界座標系 & 本地座標系
目標讀者:已經了解cocos2d-x中結點樹的概念座標係用座標來定量描述物體的位置。同一物體在不同座標系下的座標不同。cocos2d-x中各個座標系統的不同之處主要體現在原點位置的不同。
座標系統
定義螢幕座標系
原點在左上角,x軸向右,y軸向下
其他座標系
原點在左下角,x軸向右,y軸向上
作用物件均為整個螢幕。因此螢幕上物體的座標可以在這兩種座標系間相互轉換。
ccdirector::converttogl();//這兩種座標系是一對相對的概念,分別是以父節點和子節點為作用物件的座標系。將螢幕座標轉為opengl座標
ccdirector::converttoui();//
將opengl座標轉為螢幕座標
舉個例子,先上圖:
父節點為乙個cclayer圖層節點,子節點為乙個ccsprite精靈節點。把子節點放在父節點某個位置的時候,我們需要在子節點上取乙個點作為代表,這個點在父節點上的位置作為子節點在父節點上的位置。這個點稱為錨點。
錨點在本地座標系上的座標為(a1,b1)(這裡說的座標是普通意義上的座標,不是指cocos2d-x中設定錨點的那種比例座標);子節點在世界座標系上的座標為(a2,b2)。
當父節點有多個子節點時,容易獲取子節點的世界座標,但是很多時候我們希望得到比如子節點a相對於子節點b相對位置,這時就需要知道子節點a在子節點b的本地座標系中的座標值。同時,有時候我們需要通過本地座標獲得世界座標值。
ccpoint::converttonodespace();//在講世界座標系和本地座標系的時候提到錨點,這裡對錨點進行一點補充。cocos2d-x中採用比例座標來設定錨點。乙個節點的錨點預設在節點中心,即(0.5,0.5)。如果設定錨點在節點左上角,那麼錨點座標為(0,1)。世界座標轉為本地座標
ccpoint::converttoworldspace();//
將本地座標轉為世界座標
3、contentsize
由於錨點只是乙個比值向量,實際錨點在節點中的位置還需要由contentsize決定,注意contentsize不一定就是節點圖形大小,contentsize可以自行設定。
舉個例子,比如乙個精靈物件的尺寸是30*30,其contentsize初時也是30*30,現在設定contentsize為20*20,錨點預設為(0.5,0.5),這時錨點的位置在本地座標系下(10,10)。
**指明出處
cocos2dx 座標系統詳解
1 在cocos2dx中,支援以下座標系 螢幕座標系 原點在左上角,x軸向右,y軸向下。比如處理觸控事件時cctouch物件中的座標就是螢幕座標系 opengl座標系 原點在左下角,x軸向右,y軸向上。比如ccnode類的setposition函式呼叫就是此座標系 世界座標系 指相對於整個螢幕的座標...
cocos2dx 座標系統詳解
1 在cocos2dx中,支援以下座標系 螢幕座標系 原點在左上角,x軸向右,y軸向下。比如處理觸控事件時cctouch物件中的座標就是螢幕座標系 opengl座標系 原點在左下角,x軸向右,y軸向上。比如ccnode類的setposition函式呼叫就是此座標系 世界座標系 指相對於整個螢幕的座標...
COCOS2DX座標轉換
遊戲中經常會用到一些變換 遊戲中 和角色在乙個layer上,為了效率,會考慮將bullet,effect和 physicsparticle分別放到不用的層上,對應的層上使用batchnode來提高效率 和physicsparticlelauncher 粒子發射器 繫結,發射的時候,會向physics...