Cocos2d x的座標系統

2022-02-26 17:12:03 字數 1580 閱讀 2982

三、螢幕座標系 & 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();//

世界座標轉為本地座標

ccpoint::converttoworldspace();//

將本地座標轉為世界座標

在講世界座標系和本地座標系的時候提到錨點,這裡對錨點進行一點補充。cocos2d-x中採用比例座標來設定錨點。乙個節點的錨點預設在節點中心,即(0.5,0.5)。如果設定錨點在節點左上角,那麼錨點座標為(0,1)。

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...