cocos2d x座標轉換

2022-05-14 08:08:41 字數 1230 閱讀 9791

cocos2d-x中,node類有六個座標轉換函式,分別是:

converttoworldspace:把基於當前節點的本地座標系下的座標轉換到世界座標系中。

converttonodespace:把世界座標轉換到當前節點的本地座標系中。

例如,在飛機大戰專案中,寵物是玩家的子節點,玩家是遊戲場景的子節點,子彈層是遊戲場景的子節點。子彈層計算子彈都在世界座標系(基於遊戲場景的本地座標系)下。

玩家發射子彈時呼叫addbullet方法時直接呼叫getposition函式就可以獲得世界座標。

如果寵物直接呼叫getposition所得到的是自己在父節點的本地座標系中的位置。這裡是(-100,0)。直接傳入addbullet將被看做基於遊戲場景的本地座標系,也就是這裡的「世界座標系」,很顯然得不到預期結果。此時需要利用convert系列函式進行座標轉換。

void cpet::openfire(float fdelta)

為什麼不是vec2 vec = this->converttoworldspacear(vec2);呢?

原因是vec2需要轉換到玩家所在的世界座標,實際上vec2已經是寵物的「世界座標」了——getposition得到自己在父節點的本地座標系中的位置,而父節點的本地座標系就是子節點的「世界座標系」。將世界座標再次轉換為世界座標很明顯是一件不符合邏輯的事。

因此,轉換的重點是:

converttoworldspace:把基於當前節點的本地座標系下的座標轉換到世界座標系中。

converttonodespace:把世界座標轉換到當前節點的本地座標系中。

vec2 vec = this->getparent()->converttoworldspacear(vec2); //座標轉換這句的正確理解應該是「找到玩家節點的本地座標系中寵物的位置,再呼叫玩家的converttoworldspace將其轉化到更廣闊的世界座標系(遊戲場景的本地座標系)中。」

cocos2d-x 詳解座標系統

COCOS2DX座標轉換

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

cocos2d x 座標轉換總結

首先腦補下基礎知識吧 1 opengl座標系 該座標系原點在螢幕左下角,x軸向右,y軸向上。這也就是cocos2dx中用到的座標系所以沒啥好說的。2 螢幕座標系 該座標系的原點在螢幕左上角,x軸向右,y軸向下,其實和opengl座標系的差別也就是y軸的方向拉。假設遊戲場景的解析度為 500,500 ...

cocos2d x 座標辨析

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