Cocos2d-x-v3座標體系

Cocos2d-x座標體系

        cocos2d引擎是一款很是優秀的擴平臺的遊戲開發引擎,在apple遊戲榜上,有不少排名靠前的遊戲都是由他創造出來的,他也有一套十分方便的座標體系。node

1、UI座標體系

        UI座標體系相對於移動開發人員來講再熟悉不過了,在iOS系統中,它就是frame體系,即座標(0,0)點位於屏幕的左上角,向右x增大,向下y增大。app

2、OpenGL座標體系

        OpenGL座標系是cocos2d中使用的座標系,它更接近於數學上的座標系,即(0,0)點位於屏幕的左下角,往左x增大,往上y增大。這套座標系統也更符合物理世界的邏輯,便於遊戲的開發。固然,這並非說cocos2d中全部的座標都是採用這個體系標準的,在手指點擊事件層,接收到點擊座標點的座標就是採用UI座標系表示的。ui

3、世界座標系

        簡單的理解,世界座標系就是絕對座標系,在cocos2d中,精靈的座標是相對於其父視圖而言的,是相對的座標,世界座標則是統一絕對的座標,在項目中是固定的。spa

4、相對座標系

        最經常使用的座標體系,任何類設置的座標都是相對於其父視圖原點的座標。遊戲

5、座標系的轉換

        因爲UI座標系與OpenGL座標系的差別,在開發中,咱們有時須要其兩個標準的相互轉化,cocos2d中也未咱們提供了相應的方法:事件

 

Vec2 Director::convertToGL(const Vec2& uiPoint);遊戲開發

        這個方法將UI座標系轉換爲OpenGL座標系。開發

 

Vec2 Director::convertToUI(const Vec2& glPoint);get

        這個方法將OpenGL座標系轉換爲UI座標系。數學

 

Vec2 Node::convertToWorldSpace(const Vec2& nodePoint) const;

        這個方法將物體的相對座標

 

Vec2 Node::convertToNodeSpace(const Vec2& worldPoint) const;

        這個方法將世界座標轉化爲某一節點的相對座標。

 

還有兩個轉化的方法與上面相似,只有一點不一樣,這兩個方法參照的原點不是系統默認的,而是咱們設置的節點的錨點:

 

Vec2 Node::convertToNodeSpaceAR(const Vec2& worldPoint) const;

 

Vec2 Node::convertToWorldSpaceAR(const Vec2& nodePoint) const;

 

6、錨點

    錨點的概念能夠理解爲參照點,其設置範圍爲0-1,系統默認的節點錨點爲(0,0)。在UI座標系中,(0,0)點就是節點的左上角,在OpenGL座標系中,(0,0)點就是節點的左下角。例如,若是我將錨點設置爲(0.5,0.5),則在UI和OpenGL座標系中,(0,0)點都是節點的中心點。又如,我將錨點設置爲(1,1),則在UI座標系中,原點爲右下角,在OpenGL座標系中,原點爲右上角,錨點的用處就是更改參考點,在另外一種情形下,錨點對程序也會產生很大的影響,就是當咱們設置一個節點旋轉或者縮放時,節點會以錨點位置爲中心進行旋轉或縮放。

    cocos2d中經過下面方法分別來設置和獲取錨點:

 

void Sprite::setAnchorPoint(const Vec2& anchor);

設置錨點

const Vec2& Node::getAnchorPoint() const;

獲取錨點

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索