飞机大战的丰满与完善

182 阅读2分钟

在正文的第一句加入“我正在参加「码上掘金编程挑战赛」详情请看: 码上掘金编程挑战赛 ”

前言

在码上掘金编程挑战赛开赛伊始,我就写了一篇飞机大战的小游戏提交上去了,今天1024,挺摸鱼的,所以打算丰满一下飞机大战的游戏内容,主要是两方面,一方面是飞机只能射出一排子弹,应对指数级增长的障碍物时难免有心无力,输得太快,导致游戏体验不好,这次就是根据得分会扩展飞机能射出的子弹数 另一方面是游戏没有音效,这怎么能行,所以打算用soundjs来添加一些音效

之前对飞机大战实现的详细文章请看这里

飞机大战下

飞机大战上

根据得分增加弹道的实现

根据封装好的创建子弹方法可以得出,我们可以通过将分数除以10向上取整,Math.floor(score/10),来确定我们要增加几条弹道,然后通过循环的方式,创建我们的弹道

let num = Math.floor(score/10)
    for(let i=0;i<num;i++) {
    let bullet = new Sprite(textures.bullet.texture);
    bullet.width = screenWidth * .04;
    bullet.height = bullet.width * 148 / 66;
    // 默认从飞机最左侧射出子弹,这里还可以优化,默认从中间射出子弹,可以自己想一下实现
    bullet.x = plane.x + (plane.width * 0.25*i-1) - (bullet.width * 0.5);
    bullet.y = plane.y;
    scene.addChild(bullet);
    // 维护子弹
    bullets.push(bullet);
}

通过上面的方法创建的弹道是随着分数增长从左至右一次增加的,大家可以想一下,怎么从中间创建子弹,怎么处理子弹超出模型的情况,这里我们留一下这个课后作业。

小提示:从中间开始可以考虑对i进行取余操作哟,超出飞机模型的情况要考虑边界及人工延时。

添加音效

添加音效比较简单,我们只需要找到音效文件boom.mp3,然后通过soundJs进行加载即可

var soundID = "boom"

createjs.Sound.registerSound("https://createjs.cc.com/sound/boom.mp3",soundID);

function playSound() {
    createjs.Sound.play(soundID);
}