CocosCreator零基礎(chǔ)制作游戲《極限跳躍》教程4

八、添加游戲積分系統(tǒng)

前面我們實(shí)現(xiàn)了整個(gè)游戲的流程嗓袱,下面我們來(lái)完善游戲的積分系統(tǒng)。习绢。先來(lái)分析下游戲的積分渠抹,第一次展示積分的地方就是我們的游戲主場(chǎng)景MainScene,玩家通過(guò)一些機(jī)制來(lái)獲取積分闪萄,實(shí)現(xiàn)積分的更新逼肯,當(dāng)玩家游戲結(jié)束后展示玩家所獲的的當(dāng)前積分。

我們一開(kāi)始制作游戲場(chǎng)景的時(shí)候就制作了一個(gè)積分節(jié)點(diǎn)score桃煎,其string屬性值為0篮幢。打開(kāi)GAME.js腳本可以發(fā)現(xiàn),一開(kāi)始的時(shí)候我們onLoad方法就初始化了積分为迈。

接著我們?cè)贕AME.js腳本里新添加一個(gè)函數(shù)來(lái)實(shí)現(xiàn)積分的更新三椿。代碼如下:

01//GAME.js

02//....省略...

03

04?//積分更新

05????gainScore:?function?()?{

06????????this.score?+=?1;

07????????//?更新?scoreDisplay?Label?的文字

08????????this.scoreDisplay.string?=??this.score.toString();

09

10????????cc.sys.localStorage.setItem("ScoreDis",this.scoreDisplay.string);//本地存儲(chǔ)

11

12????},

13

14//.....省略...

這段代碼的意思是實(shí)現(xiàn)積分+1,增長(zhǎng)一個(gè)積分葫辐。并把積分存儲(chǔ)到本地搜锰,注意本地存儲(chǔ)代碼。耿战。蛋叼。那么什么時(shí)候才增長(zhǎng)積分呢?剂陡?

在觸摸屏幕接觸的時(shí)候狈涮,如果背景滾動(dòng)我們就增加一個(gè)積分。添加代碼位置如下圖:

這樣每次玩家移動(dòng)帶動(dòng)背景滾動(dòng)的時(shí)候鸭栖,積分就會(huì)更新歌馍。積分更新到時(shí)候會(huì)存儲(chǔ)到本地,這樣我們游戲結(jié)束的時(shí)候就可以正確的顯示出來(lái)晕鹊。

新建GameOverScore.js腳本松却,代碼如下:

01//GameOverScore.js

02cc.Class({

03????extends:?cc.Component,

04????properties:?{

05????????//積分更新

06????????Scores:?{

07????????????default:?null,

08????????????type:?cc.Label

09????????},

10????},

11????//積分更新

12????disScore:?function?()?{

13????????this.score?=??cc.sys.localStorage.getItem("ScoreDis");//讀取本地存儲(chǔ)的積分

14????????//?更新?scoreDisplay?Label?的文字

15????????this.Scores.string?=?"Score:?"+?this.score.toString();//顯示

16????},

17

18????//?use?this?for?initialization

19????onLoad:?function?()?{

20???????this.disScore();//首次加載時(shí)候調(diào)用

21????},

22

23????//?called?every?frame,?uncomment?this?function?to?activate?update?callback

24????//?update:?function?(dt)?{

25

26

27????//?},

28});

這段代碼的意識(shí)是加載的時(shí)候暴浦,onLoad函數(shù)調(diào)用積分更新的方法,實(shí)現(xiàn)從本地讀取游戲場(chǎng)景中存儲(chǔ)的積分晓锻。

雙擊打開(kāi)GameOver場(chǎng)景歌焦,如圖:

為GameOver場(chǎng)景Canvas綁定剛剛新建的GameOverScore.js腳本。并把score組件拖進(jìn)scores進(jìn)行綁定砚哆。

這樣游戲結(jié)束的時(shí)候同规,就會(huì)更新score節(jié)點(diǎn)組件的顯示內(nèi)容。下面我們來(lái)測(cè)試下窟社。雙擊打開(kāi)主場(chǎng)景,從游戲場(chǎng)景開(kāi)始測(cè)試積分的更新绪钥,以及游戲結(jié)束的積分顯示灿里。

是不是很好玩啊,哈哈程腹。加個(gè)積分排行榜更好啊匣吊,以后 慢慢擴(kuò)展來(lái)。寸潦。色鸳。

到此我們整個(gè)游戲已經(jīng)算完成了,當(dāng)然一個(gè)游戲不能沒(méi)有聲音和音效见转,下面我們來(lái)添加聲音系統(tǒng)功能命雀。。斩箫。

九吏砂、為游戲添加聲音音效功能

游戲的聲音很重要,我們?cè)谶@個(gè)游戲中需要加2個(gè)音效乘客,一個(gè)背景音樂(lè)狐血。。易核。第一個(gè)音效在玩家與障礙物碰撞的地方加碰撞音效匈织,第二個(gè)在玩家主角墜落到屏幕底部的時(shí)候加游戲結(jié)束的音效。然后游戲開(kāi)始的時(shí)候加載背景音樂(lè)牡直。

我們一開(kāi)始在MainScene場(chǎng)景中的聲音圖標(biāo)節(jié)點(diǎn)就是我們用來(lái)控制聲音的開(kāi)關(guān)缀匕。。

首先修改guawileft.js腳本碰逸,添加音效資源弦追,在onload設(shè)置聲音大小。代碼:

01//guanwileft.js

02

03???properties:?{

04

05????????times:?0,

06????????//?碰撞音效資源

07????????pengAudio:?{

08????????????default:?null,

09????????????url:?cc.AudioClip

10????????},

11????},

12????//?use?this?for?initialization

13????onLoad:?function?()?{

14

15????????????this.moveRight();

16????????????cc.audioEngine.setEffectsVolume?(?0.2?);//設(shè)置音效聲音大小

17

18

19????},

同理在guaiwuright.js腳本也是這樣添加花竞。劲件。

為障礙物的2個(gè)腳本添加好代碼后掸哑,我們需要修改我們的兩個(gè)障礙物預(yù)制體。綁定音效資源零远,這里以zhangaiwuleft預(yù)制體為例苗分。雙擊zhangaiwuleft預(yù)制體,添加聲音資源綁定牵辣。如圖:

zhangaiwuright預(yù)制體同理也是這樣添加聲音摔癣。

碰撞音效加載好后,我們?yōu)橛螒蚪Y(jié)束加個(gè)音效纬向。打開(kāi)GAME.js腳本择浊。在?properties中添加屬性。代碼如下:

01????????//?背景音樂(lè)資源

02????????bgmusic:?{

03????????????default:?null,

04????????????type:?cc.Node

05????????},

06????????//?游戲音樂(lè)資源

07????????gameAudio:?{

08????????????default:?null,

09????????????url:?cc.AudioClip

10????????},

11????????//?游戲結(jié)束音樂(lè)資源

12????????gameOverAudio:?{

13????????????default:?null,

14????????????url:?cc.AudioClip

15????????},

添加好代碼后逾条,我們雙擊打開(kāi)MainScene場(chǎng)景開(kāi)始為屬性綁定資源和節(jié)點(diǎn)琢岩。。如圖:

可以跑起來(lái)測(cè)試下我們的聲音有沒(méi)有了师脂。担孔。這就完了嗎?當(dāng)然不是吃警,我們的聲音圖標(biāo)還沒(méi)有用到案馄!酌心!

下面為我們的聲音圖標(biāo)節(jié)點(diǎn)加一個(gè)腳本拌消,新建腳本AudioScript.js。代碼如下:

01//AudioScript.js

02

03cc.Class({

04????extends:?cc.Component,

05????properties:?{

06????????//是否開(kāi)啟音樂(lè)??默認(rèn)開(kāi)啟

07????????isOpen:?true,

08????????//?游戲音樂(lè)資源

09????????gameAudio:?{

10????????????default:?null,

11????????????url:?cc.AudioClip

12????????},

13

14????},

15????//?use?this?for?initialization

16????onLoad:?function?()?{

17????????this.isOpen?=?true;//開(kāi)啟音樂(lè)

18????????cc.audioEngine.playMusic?(?this.gameAudio,?true);

19

20????},

21????//檢查音樂(lè)開(kāi)啟狀態(tài)

22????checkMusic:function(){

23

24????????returnisOpen;

25????},

26????//獲取點(diǎn)擊坐標(biāo)

27????setCp:function(pos){

28

29????????var?rec?=?cc.rectContainsPoint(this.node.getBoundingBoxToWorld(),pos)?;

30

31????????if(rec){

32????????????//檢查音樂(lè)開(kāi)啟狀態(tài)

33????????????//如果音樂(lè)開(kāi)啟了則關(guān)閉音樂(lè)和音效

34????????????if(this.isOpen){

35?????????????//if?(cc.audioEngine.isMusicPlaying())?{

36????????????????cc.audioEngine.pauseMusic();//暫停正在播放音樂(lè)

37????????????????cc.log("暫停正在播放音樂(lè)");

38????????????????//this.node.addChild("Texture/menu_music_off.png");

39????????????????this.isOpen?=?false;

40????????????????}

41????????????else{

42??????????????//?cc.log("music?is?not?playing");

43??????????????cc.audioEngine.resumeMusic?();//恢復(fù)背景音樂(lè)

44??????????????cc.log("恢復(fù)背景音樂(lè)");

45??????????????this.isOpen?=?true;

46?????????????}

47

48????????}

49????},

50

51????//?called?every?frame,?uncomment?this?function?to?activate?update?callback

52????//?update:?function?(dt)?{

53

54????//?},

55});

代碼里實(shí)現(xiàn)了一個(gè)音樂(lè)播放的狀態(tài)安券,用來(lái)給我們判斷是否播放了拼坎。播放了圖標(biāo)顯示聲音圖標(biāo),沒(méi)有播放顯示靜音圖標(biāo)完疫。

1var?rec?=?cc.rectContainsPoint(this.node.getBoundingBoxToWorld(),pos)?;

此處用來(lái)判斷聲音圖標(biāo)的包圍盒和點(diǎn)擊坐標(biāo)的比較泰鸡,如果為true則表示聲音圖標(biāo)被點(diǎn)擊到了,如果聲音圖標(biāo)被點(diǎn)擊則判斷當(dāng)前聲音播放狀態(tài)壳鹤,并改變狀態(tài)盛龄。聲音圖標(biāo)節(jié)點(diǎn)顯示如圖:

聲音節(jié)點(diǎn)綁定好腳本后,我們繼續(xù)修改GAME.js腳本中的代碼芳誓,為AudioScript.js中的方法setCp:function(pos)傳參數(shù)余舶。

首先在頂部添加引用代碼,然后在點(diǎn)擊事件添加點(diǎn)擊的檢測(cè)方法锹淌,然后update實(shí)現(xiàn)更新?tīng)顟B(tài)匿值。代碼如圖:

這里我就不貼代碼了,大家手打下赂摆。挟憔。钟些。到此我們的聲音系統(tǒng)也添加完畢了。绊谭。政恍。對(duì)了,還少一點(diǎn)达传,聲音狀態(tài)切換的時(shí)候聲音圖標(biāo)也要改變啊篙耗。。宪赶。這里大家自己解決宗弯。。

未完待續(xù)............點(diǎn)擊鏈接加入群聊【cocos/unity交流群】

作者:閉眼就天黑

來(lái)源:閉眼就天黑的博客

聲明:發(fā)布此文是出于傳遞更多知識(shí)以供交流學(xué)習(xí)之目的搂妻。若有來(lái)源標(biāo)注錯(cuò)誤或侵犯了您的合法權(quán)益蒙保,請(qǐng)作者持權(quán)屬證明與我們聯(lián)系,我們將及時(shí)更正叽讳、刪除,謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坟募,一起剝皮案震驚了整個(gè)濱河市岛蚤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌懈糯,老刑警劉巖涤妒,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異赚哗,居然都是意外死亡她紫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)屿储,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贿讹,“玉大人,你說(shuō)我怎么就攤上這事够掠∶窆樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵疯潭,是天一觀的道長(zhǎng)赊堪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)竖哩,這世上最難降的妖魔是什么哭廉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮相叁,結(jié)果婚禮上遵绰,老公的妹妹穿的比我還像新娘辽幌。我一直安慰自己,他們只是感情好街立,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布舶衬。 她就那樣靜靜地躺著,像睡著了一般赎离。 火紅的嫁衣襯著肌膚如雪逛犹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天梁剔,我揣著相機(jī)與錄音虽画,去河邊找鬼。 笑死荣病,一個(gè)胖子當(dāng)著我的面吹牛码撰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播个盆,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼脖岛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了颊亮?” 一聲冷哼從身側(cè)響起柴梆,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎终惑,沒(méi)想到半個(gè)月后绍在,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雹有,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年霸奕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了质帅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盟庞,靈堂內(nèi)的尸體忽然破棺而出什猖,到底是詐尸還是另有隱情,我是刑警寧澤在旱,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布桶蝎,位于F島的核電站登渣,受9級(jí)特大地震影響毡泻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仇味,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一丹墨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昧碉,春花似錦揽惹、人聲如沸四康。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)漏设。三九已至郑口,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腾仅,已是汗流浹背套利。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工日裙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吹艇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓受神,卻偏偏與公主長(zhǎng)得像格侯,于是被迫代替她去往敵國(guó)和親鼻听。 傳聞我的和親對(duì)象是個(gè)殘疾皇子联四,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容