cocos2d-x游戏实例(22)-纵版射击游戏(9)
小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man
繼續上一篇的縱版射擊游戲,本篇加入幾個敵人的類型,效果如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
我加入5種類型的敵人,分別為對稱的貝塞爾曲線(兩條運動軌跡對稱),對稱的折線(兩條運動軌跡對稱),直線。首先我們用隨機數來決定這次出的敵人的類型,代碼如下:
type?=?CCRANDOM_0_1()?*?5;
CCRANDOM_0_1()?是引擎為我們實現的一個方法,是返回的0到1的隨機數,我們把這個隨機數乘以一個5生成的這個數是0到4的自然數,對應我們不同的五個類型。
前兩個類型是我們之前的貝塞爾曲線的運動軌跡,代碼如下:
bezierTo1?=?CCBezierTo::actionWithDuration(5,?bezier1);
mysprite->runAction(bezierTo1);
不同之處就是第一句話中的第二個參數分別是bezier1和bezier2,他們的定義在構造函數里面,代碼如下:
就是控制點的對稱的點。然后是兩個折現,他們是對稱的,代碼如下:
路徑3:
actionTo1?=?CCMoveTo::actionWithDuration(2,?CCPointMake(30,300));
actionTo2?=?CCMoveTo::actionWithDuration(2,?CCPointMake(214,150));
actionTo3?=?CCMoveTo::actionWithDuration(1,?CCPointMake(122,-20));
mysprite->runAction(CCSequence::actions(actionTo1,actionTo2,actionTo3,NULL));
路徑4:
actionTo1?=?CCMoveTo::actionWithDuration(2,?CCPointMake(214,300));
actionTo2?=?CCMoveTo::actionWithDuration(2,?CCPointMake(30,150));
actionTo3?=?CCMoveTo::actionWithDuration(1,?CCPointMake(122,-20));
mysprite->runAction(CCSequence::actions(actionTo1,actionTo2,actionTo3,NULL));
就是對稱的兩條折線。最后一個敵人類型就是一直直線的軌跡運動,代碼如下:
actionTo1?=?CCMoveTo::actionWithDuration(5,?CCPointMake(122,-20));
mysprite->runAction(actionTo1);
然后我們通過initWithFile方法為敵人更換不同的圖片,這樣我們這個選擇類型的函數就完成了:
這個函數chooseflytype在我們初始化敵人和在每次更換敵人時調用這個函數。
到此為止,這個實例就暫時結束了,后面還會寫其它的實例,其實這個實例可以再進行修改一下,包括細化ui細化敵人,包括加入敵人的編隊等,我這里只是對用cocos2d-x實現縱版射擊游戲做一個簡單的介紹,算是拋磚引玉吧,這里也把代碼上傳,代碼地址為:
http://download.csdn.net/detail/bill_man/4195629
另外感謝大家的支持,代碼編寫的時間倉促,也沒什么時間重構優化,有錯誤和不足之處還要麻煩大家幫助我指出,謝謝大家
如有錯誤之處,希望大家多多指正
下一篇繼續縱版射擊游戲實例
總結
以上是生活随笔為你收集整理的cocos2d-x游戏实例(22)-纵版射击游戏(9)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2d-x游戏实例(21)-纵版
- 下一篇: cocos2d-x游戏实例(23)-简易