cocos2d x學習筆記(2) 座標系

2021-06-20 23:34:56 字數 1373 閱讀 4560

座標系是非常基礎的概念,如果連座標系都搞不太清楚的話,開發起來就真的無從下手了,借鑑知易教程寫一篇關於座標系的日記。

一般意義上的座標系是說笛卡爾座標系,相信大家都學過。

但是不同的圖形庫採用不同的座標系。iphone平台提供了兩種會相簿:quartz 2d和opengl es。其中quartz 2d是core graphics繪相簿的子集,opengl es是跨平台圖形庫opengl的嵌入裝置版。這兩者的座標系原點不一樣。

大多數圖形視窗應用程式都採用類似的座標系。這是一種基於虛擬「畫布」繪圖模型的圖形庫,繪圖指令按次序向「畫布」上畫下不同的內容,後畫的內容會覆蓋先畫的內容(透明的除外)。這比較容易理解。

opengl es的原點在左下角:

opengl es相對比較複雜,這實際上是乙個3d的繪相簿,按照「狀態機」模型設計的繪相簿。他不是簡單地讓後者疊加在前者上面,而是記錄各個繪製內容的三維位置關係,再按照系統設定的投影關係,將繪製的所有內容投影在某個特定的虛擬視窗上。

cocos2d-x是基於opengl es的,所以請大家牢記我們使用笛卡爾座標系,座標系的原點在左下角。

cocos2d-x引擎的大多數可顯示物件都是從ccnode類派生而來的,理解該類對於使用該圖形引擎至關重要。今天我們先來說明與位置相關的屬性:

1)anchorpoint(錨點)

為了將乙個矩形影象精準地放置在螢幕某一位置上,需要設定該矩形的位置參考點。通常人們習慣於將該參考點設定在矩形的左上角上,而在cocos2d-x中我們稱其為錨點,預設位置在矩形的中心。

2)position(位置)

position就是ccnode物件實際的opengl es座標。

下圖說明了如何利用這兩個屬性來設定ccnode物件的顯示位置:

圖中紅色矩形框的position為(5, 5),anchorpoint為(0.3, 0.5)。若要選擇紫色大圓點a為錨點,則設定anchorpoint為(0, 0),如要選擇粉紅色大圓點b為錨點,則設定anchorpoint為(1, 1)。顯然設定為(0.5, 0.5)時,錨點位於矩形物件的幾何中心點c,這是ccsprite類物件的預設anchorpoint值。

再次強調一下:錨點是個比例值,ccsprite類預設的錨點在正中心c點位置。

COCOS2DX座標轉換

遊戲中經常會用到一些變換 遊戲中 和角色在乙個layer上,為了效率,會考慮將bullet,effect和 physicsparticle分別放到不用的層上,對應的層上使用batchnode來提高效率 和physicsparticlelauncher 粒子發射器 繫結,發射的時候,會向physics...

cocos2d x 座標辨析

閱讀了cocos2d的幾個方法 ccpoint converttonodespace const ccpoint worldpoint ccpoint converttoworldspace const ccpoint nodepoint ccpoint converttonodespacear c...

cocos2d x座標轉換

cocos2d x中,node類有六個座標轉換函式,分別是 converttoworldspace 把基於當前節點的本地座標系下的座標轉換到世界座標系中。converttonodespace 把世界座標轉換到當前節點的本地座標系中。例如,在飛機大戰專案中,寵物是玩家的子節點,玩家是遊戲場景的子節點,...