cocos2d-x 欢乐捕鱼游戏总结
這幾天一直都在做一個捕魚游戲Demo,大概花掉了我快一個禮拜的時間。游戲主體是使用的cocos2d-x高級開發(fā)教程里面提供的小部分框架基本功能。然后自己加入所有的UI元素和玩法。變成了一個體驗(yàn)不錯的捕魚游戲。現(xiàn)把這幾天遇到的所有情況總結(jié)如下:
1.捕捉到魚時發(fā)現(xiàn),魚的移動動作沒有移除,但是實(shí)際卻進(jìn)行了魚對象的移除操作:
解決:首先考慮是不是自己沒有移除,存儲魚的數(shù)組會不會太小,而導(dǎo)致魚對象混亂的情況。 數(shù)組加大無效果。考慮是不是由于引用計數(shù)的原因,被其他對象引用,所以導(dǎo)致移除不了,通過進(jìn)行打引用計數(shù)日志發(fā)現(xiàn),并非此情況,因?yàn)橹挥胁糠拄~不能移除繼續(xù)游動的動畫,而所有的引用計數(shù)卻都相等。在“這不科學(xué)”的理論下,最終想到了可能是自己進(jìn)行魚動畫播放的時候,有重疊。所以本來已經(jīng)移除掉了魚對象,但是由于重疊會導(dǎo)致魚對象并沒有被移除的假象。坑的我調(diào)試了一個下午。這是最大的bug.
2.由于給魚存放的數(shù)組CCArray沒有對已經(jīng)移除屏幕的魚對象進(jìn)行清理,導(dǎo)致數(shù)組線性增大,后來修改,保證數(shù)組維持在5到30之間。也即屏幕中維持相對應(yīng)的魚的數(shù)量。
3.移植到安卓平臺,登陸進(jìn)去發(fā)現(xiàn)閃退,后來發(fā)現(xiàn)是由于我沒有在進(jìn)度條下進(jìn)行動畫緩存加載,而是直接寫在進(jìn)度條執(zhí)行完切換場景的時候。直接就給跪了。
4.安卓登陸進(jìn)去發(fā)現(xiàn)剛開始只有部分有聲音,有些后來才有,知道是自己沒有對聲音預(yù)加載完全。
5.遇到了隨機(jī)數(shù)不隨機(jī)的情況,發(fā)現(xiàn)我使用隨機(jī)數(shù)的時候,不管是CCRAND_0_1,rand,srand 只要時間點(diǎn)大概相差一秒以內(nèi),每次隨機(jī)出來的都是固定的一個數(shù)。網(wǎng)上找資料發(fā)現(xiàn)有一個函數(shù)可以不由時間限制,但是卻只能用在ipone開發(fā)里面吧。
6.音效和音樂的bug,雖然自己設(shè)置了音樂和音效不可播放,但是只要我使用playbackgroundmusic,effect就又會重啟音樂和音效。所以在每一個需要play的地方都提前判斷當(dāng)前是否設(shè)置為可以播放狀態(tài)。
7.使用UserDefault.xml文件的時候,第一次是默認(rèn)什么也沒有的,而第二次運(yùn)行的話都把第一次的數(shù)據(jù)保存了,所以這里需要進(jìn)行一次分支判斷,當(dāng)前是否為第一次使用。可以在數(shù)據(jù)里面設(shè)置一個key,只有能讀到key則證明不是第一次了。否則沒讀到默認(rèn)返回FALSE。
8.魚和網(wǎng)的剛體是非常容易碰撞的,但是抓魚卻不一定每次都能抓到,而且還有根據(jù)魚的大小和網(wǎng)的大小來計算抓魚概率,所以這里想到一種辦法,將魚由小到大由0.5趨近于0,網(wǎng)由小到大從0趨近于0.5然后再兩者相加得到抓魚概率,但是發(fā)現(xiàn)也還是比較容易抓,所以再進(jìn)行一次隨 機(jī)數(shù)判斷,就可以通過這個隨機(jī)數(shù)來設(shè)置抓魚的難易程度了。
9當(dāng)魚被抓到的時候要執(zhí)行各種動畫:魚被抓住時的動畫,出現(xiàn)金幣并移動到炮臺位置的合并動畫這里要用到CCSpawn,顯示加多少金幣的動畫。
? 10.切記當(dāng)設(shè)置參數(shù)到?CCUserDefault時,一定要記得調(diào)用flush,不然數(shù)據(jù)不會保存,最好每次set完就進(jìn)行保存。游戲退出時肯定需要保存好,這里是個大坑。
11.最后是移植到安卓的天坑,首先自己使用書上的cocos2d-x的模板,就只能用相對于的版本,發(fā)現(xiàn)時2.0.3的,都是兩年前發(fā)布的版本了,網(wǎng)上都搜半天,最后在一個類似的官方網(wǎng)站搜到了,卻發(fā)現(xiàn)下載不了。是網(wǎng)址上有g(shù)oogle字樣么,我大天朝。木有辦法,看移植到2.1.4可行不,發(fā)現(xiàn)各種改,木有辦法,放棄。那就向下找,發(fā)現(xiàn)下載了一個cocos2d-1.0.1-x-0.13.0-beta版本,結(jié)果也是報錯,感覺會不成功,還是放棄。最后只能下載2.0.3版本,木得辦法,但是奇跡發(fā)生了。我把網(wǎng)址放到QQ上發(fā)給同學(xué)時,卻發(fā)現(xiàn)可以在會話框里面顯示下載。企鵝真是我的恩人啊。終于把2.0.3版本下載,發(fā)現(xiàn)編譯成安卓,還要使用cygwin,幸好我之前有編譯過,ndk,sdk,adt都妥妥的配置好了,而三次我用3.0版本的編譯,只需要使用python文件,輕松搞定,而這次需要各種改參數(shù)和配置。最終花了一天時間,終于生成了.o文件,但是但我編譯到安卓上生成apk之后妥妥的給我閃退了。orz 因?yàn)橹笆褂玫牟遏~框架自帶的一些文件,發(fā)現(xiàn)很多都缺失了。導(dǎo)致了這個問題。后面直接使用2.0.3版本的已編譯好了的HelloCpp進(jìn)行更改,添加Classes和Resource文件。最后生成apk文件,這里又有一個坑,但我生成好時,我就想在ADT里面編譯查看,發(fā)現(xiàn)總是報:Not Such file or directory (2) 。以為是自己代碼的問題,各種看,后來發(fā)現(xiàn)直接把a(bǔ)pk拷貝到真機(jī),居然能運(yùn)行。啊,又一大坑。
好了,到這里捕魚項(xiàng)目就弄好了,雖然各種曲折,但是能編譯到安卓上并運(yùn)行,還是很happy的,畢竟是2.0.3版本的,早知道就寫的時候把框架搬到3.0+的版本上,移植就快多了。詳細(xì)的移植教程我就不寫了, 網(wǎng)上已經(jīng)有很多教程了。比如這個:cocos2dx環(huán)境配置及打包apk?
源碼的話,過段時間再貼上來吧。Demo是希望面試的時候能夠用上,(*^__^*) 嘻嘻…… ?最后貼上我的 游戲界面吧~?
UI都是自己網(wǎng)上找的,我不會告訴你可以解壓別人發(fā)布的apk文件獲取一些UI的 :)
?
轉(zhuǎn)載于:https://www.cnblogs.com/xxiaoye/p/3977048.html
總結(jié)
以上是生活随笔為你收集整理的cocos2d-x 欢乐捕鱼游戏总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝马刷隐藏五系BMW530LI EVO开
- 下一篇: 最佳实践 | 如何基于GitHub Ac