Cocos2D-X掃盲之坐標系、錨點


一、引言

  在Cocos2D-X的開發過程中,經常會碰到設置精靈位置的問題。而設置位置的過程,涉及到兩個問題:第一是坐標系,包括原點的位置、X/Y坐標軸的方向燈;第二是基准點(Cocos2D-X中叫錨點),即精靈旋轉的時候,以哪個點為軸心;下面我們將逐一來分析這兩個問題。

 

二、正文

 1. 坐標系

  Cocos2D-X中,坐標系包括:OpenGL坐標系、世界坐標系、節點相對坐標系、仿射變換等,這些坐標系的原點都是在屏幕的左下角、X軸向右、Y軸向上。

  1.1 OpenGL坐標系

   屏幕坐標系的原點在屏幕的左上角、X軸向右、Y軸向下。屏幕觸擊時間CCTouch傳入的位置信息就是該坐標系,因此Cocos2D-X在對屏幕觸摸事件做出響應前,需要使用CCDirecotr::convertToGL()方法,將觸摸點轉化為OpenGL坐標系。

  1.2 世界坐標系

   也叫絕對坐標系,是游戲開發中建立的概念,世界是指游戲世界。Cocos2D-X中的元素都是父子關系的層級結構,通過CCNode設置位置使用的是相對其父節點的本地坐標系,最后繪制屏幕的時候,會將本地節點坐標映射成世界坐標系。

  1.3 節點坐標系

   節點坐標系是和特定節點相關聯的坐標系,每個節點都有獨立的坐標系。當節點移動或者改變方向的時候,和該節點相關聯的坐標系(子節點)會隨之一起移動或改變方向。CCNode類中設置位置使用的就是父節點的節點坐標系,它有兩個函數可以轉換坐標:

   convertToWorldSpace:把基於當前節點的本地坐標系轉換為世界坐標系;不基於錨點,如果基於錨點應該使用convertToWorldSpaceAR;

   convertToNodeSpace:把世界坐標系轉化為當前節點的本地坐標系;不基於錨點,如果基於錨點應該使用convertToNodeSpaceAR;

  1.4 仿射變換

   仿射變換是指在線性變換的基礎上加上平移,平移不是線性變換。游戲中大量使用的旋轉、縮放、平移等都是仿射變換。

 

 2. 錨點

  通俗點說,錨點就是你在CCNode中,使用貼圖的基准點。默認錨點為(0.5, 0.5)。

  精靈在進行運動的過程中,都需要一個錨點,比如在旋轉的過程中,設置的錨點不一樣,旋轉效果是不一樣的。比如使用默認錨點,精靈是以中點為軸心旋轉;使用(0, 0)作為錨點,精靈是以左下角為軸心旋轉;使用(1, 1)作為錨點,精靈是以右上角為軸心旋轉。

 

三、小結

  這些都是基本的概念,有空的時候,我會附上詳細的實例代碼和效果圖。


免責聲明!

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



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