cocos2d-X學習之坐標系統


    在cocos2d-x中有兩種坐標系,分別是屏幕坐標系和open gl坐標系。

    屏幕坐標系:x軸朝右,y軸朝下。默認原點在左上角,如下圖:

     這個是一般的圖形系統使用的坐標,也是windows系統的默認坐標體系。但由於cocos2d-x引擎使用的是open gl es進行渲染的,所以其默認是用的OpenGL坐標體系,如下圖:

       在opengl坐標體系中有兩個非常重要的參數,即錨點和位置。

     錨點作為位置的參考點,錨點在設置某一個物件(CCSprite,CCLayer)的位置時,其參照位置,數據為(0.0-1.0)之間,默認是(0.5, 0.5),也就是說其默認參照位置是該物件的中心。如果把某一物體放到屏幕的中心,對於默認anchor來說,就是把該物體的中心放到屏幕中心 ,取值在01之間的好處就是,錨點不會和具體物體的大小耦合,也即不用關注物件大小,而應取其對應比率,如果把錨點改成(00),則進行放置位置時,以圖片左上角作為起始點,也就是放置位置設置對應的點

      位置顧名思義就是物體的位置。

     在調用任何需要設置位置的函數或從函數獲取位置信息前,必須要明確這個函數使用的是哪個坐標系,如調用CCNode類的setPosition函數,它使用的就是GL坐標系,而在處理觸摸時間時CCTouch對象在宏的坐標就是屏幕坐標。

      另一個重要的坐標系就是和Node相關的本地坐標系。這個結構和一般做3D用的場景樹的概念是一樣的。所以從Node拿到的位置是該節點的本地坐標,需要通過特定的函數才能把本地坐標轉換為世界坐標。而且這里的坐標都用的是GL坐標系。在CCNode對象中有幾個方便的函數可以做坐標轉換。convertToWorldSpace方法可以把基於當前node的本地坐標系下的坐標轉換到世界坐標系中。convertToNodeSpace方法可以把世界坐標轉換到當前node的本地坐標系中。


免責聲明!

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



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