cocos2d x 遊戲創作過程 四

2021-08-26 12:44:56 字數 1775 閱讀 7692

製作乙個可以操控的介面

然後給介面 載入需要的值

從瓦片地圖中獲取需要的屬性。

開啟介面關閉介面。

如果用cocosstudio的話,可以輕鬆製作乙個,美觀的介面。 然後用這張介面載入資料。

載入介面的時候用邏輯符號,所對應的ui。載入就可以了,很簡單。

void dialoglayer::initdialoglayer(const

char* filename,std::vector

propertyvector)

瓦片中新增物件層,就可以在物件層中隨意新增數字。 而且可以把瓦片在地圖中的位置精確取出來,所以非常方便, 而tmxobjectgroup 也就是一些xml解析器而已。 所以很容易取出來。 首先從瓦片組中,取出每一條物件,然後每一條物件逐一解析。 就可以得到不同的值了。瓦片物件塊,可以在地圖層修改 敵人與物品的資料。 可以方便開發。 開發的目的大部分要做好的後期的簡化編輯狀態。 只要做好對應的狀態那麼開發很容易上手,甚至不需要**的參了。

tmxobjectgroup *group = tilemap->getobjectgroup("thing");

//這個組的所有object都封裝在vector中

std::vector

group1 =group->getobjects();

for(int i=0;i//從value中取出的時候實際上是個鍵值對。

valuemap spawnpoint = group1[i].asvaluemap();

//獲取位置資料

float pro = spawnpoint["x"].asfloat();

float pro_y=spawnpoint["y"].asfloat();

//還可以取出很多資料。。。。。。。

cclog("具體位置。%f",pro);

//建立實體

propertydata *property=propertydata::create();

property->setimage("gun1.png");

property->setid(39);

b2bodydef bodydef;

bodydef.type = b2_dynamicbody;

bodydef.position.set(pro/ptm_ratio, (pro_y/ptm_ratio));

b2body *body=world->createbody(&bodydef);

property->setid(38);

//這裡設計的是乙個多功能精靈。

enemyrole *enemyrole = enemyrole::createwithproperty(property,body,"str");

gamelayer->addchild(enemyrole,10);

}

很簡單的乙個layer,在控制類裡建立,然後銷毀。就可以了。不知道對不對。但是注意的是如果開啟設定介面的話,那麼遊戲應該暫停才對,如果onpause暫停的話。控制介面裡的鍵位監聽也跟著暫停了。 所以乙個很簡單的方法就是,把更新的計時器 變為

this->schedule(schedule_selector(gamelayer::update));可操控的計時器。 就可以了。

//如果用esc開啟設定介面的話,那麼是6.

case

6: //設定標記

if(!dialog)else

break;

cocos2d x 遊戲創作過程 二

首先引入乙個類 那就是camera 這個類。最早想嗎,如果不行,自己寫乙個,沒想到當定義到camera這個類的時候,出現紅線。最後發現cocos2d x 竟然有這個類。然後對於camera類進行研究發現。這個類可以解決很多問題。主要應用在3d方面。但是如果2d也可以應用到。建立camera came...

cocos2d x 遊戲創作過程 三 2

這個很難,但是解決了,至少花費了乙個月,甚至翻閱的三角函式,來尋找答案。最終完成了。炮彈的角度問題,和炮彈的發射點問題。這兩樣非常重要。至少對我來說太珍貴了,這幾行 上一章說到了,骨骼動畫 隨意控制骨骼,可以控制骨骼的角度,自由的變換。而手槍發射的時候是根據你的胳膊的變化來自由調整角度。那麼問題就來...

cocos2d x 遊戲優化方案

優化的方案 引擎底層優化 紋理優化 渲染優化 資源快取 記憶體優化.紋理優化 cocos2d x 底層是opengl es實現的。對於圖案片載入的記憶體是2的冪次方。使用的是100 128 會被轉為128 128。如此浪費一定的空間。色深優化 png a8r8g8b8 a1r5g5b5 argb44...