1、引言函數
在Cocos2D-X的開發過程當中,常常會碰到設置精靈位置的問題。而設置位置的過程,涉及到兩個問題:第一是座標系,包括原點的位置、X/Y座標軸的方向燈;第二是基準點(Cocos2D-X中叫錨點),即精靈旋轉的時候,以哪一個點爲軸心;下面咱們將逐一來分析這兩個問題。spa
2、正文遊戲
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)做爲錨點,精靈是以右上角爲軸心旋轉。
3、小結
這些都是基本的概念,有空的時候,我會附上詳細的實例代碼和效果圖。