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