製作乙個可以操控的介面
然後給介面 載入需要的值
從瓦片地圖中獲取需要的屬性。
開啟介面關閉介面。
如果用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...