从0开始用CocosCreator开发飞机大战小游戏(十五)

128 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情

上一次我们说了游戏添加分数功能,今天我们说说游戏结束。

1. 在assets文件夹下新建一个场景,并且命名为over。

(1) 在Canvas下新建一个Sprite(精灵),并且命名为bg image.png

(2) bg的大小设置为720 * 1280。并且关联之前的背景图 image.png

(3)新建一个Label,并且命名为score image.png

(4)设置score的位置和大小,String设置为Score:0 image.png

(5)添加一个按钮,并且命名为restart image.png

(6) 关联按钮背景图 image.png (7)调整按钮大小。选择按钮类型 image.png

(8)在script文件夹下新建一个脚本文件,并且命名为gameOver image.png

(9)将脚本gameOver.ts挂载到Canvas下 image.png

(10)添加重新开始的函数

import { _decorator, Component, Node, director } from 'cc';

import { global } from './global';

const { ccclass, property } = _decorator;

@ccclass('gameOver')

export class gameOver extends Component {

    onClicked(event:Event,cutom:string){

        director.loadScene("menu")

        global.SCORE=0; //重置分数

    }

}

(11)在restart重玩按钮添加点击事件,并眀绑定到gameOver.ts脚本上的onClicked函数上 image.png

2. 打开enemyBullet.ts脚本

(1)在onBeginContact函数里增加游戏结束的判断

        if(otherCollider.getComponent(play).planeBlood <=0){

            director.loadScene("over")

        }

  (2)同样在enemy.ts脚本也要做相同的操作。也是要onBeginContact函数里增加游戏结束的判断

            if(otherCollider.getComponent(play).planeBlood <=0){

                director.loadScene("over")

            }

  3. 在游戏结束页面显示分数,打开gameOver.ts脚本,增加onLoad函数

    onLoad(){

        find("Canvas/score").getComponent(Label).string="Score"+global.SCORE.toString();

    }

4. 接下来说说游戏声音方面的东西

(1)在assets下新建文件夹sound,主要用来存放音频文件 image.png

(2)打开常驻节点PersistNode,添加audio组件 image.png

(3)关联背景音乐,并且设置为循环播放模式 image.png

  (4)打开persistNode.ts脚本,添加声音方面的装饰器

    @property(AudioClip)

    bulletAudioClip:AudioClip=null; //普通子弹声音

    @property(AudioClip)

    lightAudioClip:AudioClip=null; //激光子弹声音

    @property(AudioClip)

    missileAudioClip:AudioClip=null; //导弹子弹声音

    @property(AudioClip)

    boomAudioClip:AudioClip=null; //敌机爆炸声音

    @property(AudioClip)

    gameOverAudioClip:AudioClip=null; //游戏结束声音

(5)打开常驻节点persistNode。分别关联普通子弹,激光子弹,导弹子弹,敌机爆炸,游戏结束的声音。 image.png

今天就到这里了,主要说了声音方面的东西。下次我们继续完善。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家