Cocos2d-x 詳解座標系統

來源:互聯網
上載者:User

// returns the current touch location in screen coordinatesCCPoint CCTouch::getLocationInView() const {     return m_point; }
②從觸摸點擷取到在OpenGL座標系中的座標

// returns the current touch location in OpenGL coordinatesCCPoint CCTouch::getLocation() const{     return CCDirector::sharedDirector()->convertToGL(m_point); }

(1)全局座標系統

(2)節點座標系統

其實,二者之間是一個絕對和相對的概念,全局座標系是絕對的,而節點座標系是相對的。

可以這樣理解全局座標系,所謂絕對,其實它就是和OpenGL座標系(等同)一致的座標系統,原點在螢幕左下角,x軸方向向右,y軸方向向上。

而節點座標系是相對於具體的節點來說的,每一個物體都有一個特定的座標系統,當節點移動時,那麼它本身的座標系統也就跟著發生變化。但是有一點需要特別注意:節點座標系的原點預設是其左下角位置。

例如說:我們在一個layer中添加一個sprite,錨點為(0,0),size為(40,40),位置為(50,50),那麼此時這個sprite的節點座標系統是神馬呢? ------- 這時它的節點座標系統就是以,x軸向右,y軸向上的座標系。

對上面的例子稍稍變一下:錨點位置改為(0.5,0.5),其他不變,那麼這個時候sprite的節點座標系統又是多少呢?(注意到上面的:) ----- 這個時候它的節點座標系統就是以,x軸向右,y軸向上的座標系。

這樣理解是否好一些呢?(如有不對之處,歡迎評論指正!)

關於這兩個座標系統之間的轉換,在CCNode中定義了以下四個常用的座標變換的相關方法。

/**      * Converts a Point to node (local) space coordinates. The result is in Points.     */    CCPoint convertToNodeSpace(const CCPoint& worldPoint);        /**      * Converts a Point to world space coordinates. The result is in Points.     */    CCPoint convertToWorldSpace(const CCPoint& nodePoint);        /**      * Converts a Point to node (local) space coordinates. The result is in Points.     * treating the returned/received node point as anchor relative.     */    CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint);        /**      * Converts a local Point to world space coordinates.The result is in Points.     * treating the returned/received node point as anchor relative.     */    CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint);

上面的解釋也是來自Cocos2dx權威指南一書,下面我通過一個例子來說明這四個方法的理解和作用。


Cocos2d: position = (-25.000000,-60.000000)Cocos2d: position = (15.000000,20.000000)

                               






相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.