Phaser.js开发-愤怒的小鸟(下)

经过上篇文章的学习,咱们已经能经过键盘来控制小鸟,包括小鸟碰撞是否超出窗口,以及管道循环,还有分数面板的检测,接下来咱们继续往下进行。javascript

update: function() {
        //若是小鸟超出窗口,重置游戏
        if (this.bird.inWorld == false)
            this.restart_game(); 

        // 碰撞与接触感应物理引擎,小鸟跟管道 ,重置游戏
        this.game.physics.overlap(this.bird, this.pipes, this.restart_game, null, this);      
    },

这里面的overlap是指,仅仅检测是否碰撞,而且分别给定了三个对象。java

在这个游戏里面咱们是用键盘事件控制小鸟,因此咱们要检测每次按空格时,调用的函数,从而得到小鸟的碰撞感应,git

jump: function() {
        // 检测小鸟碰撞 获取降低高度 告诉你撞管子了
        this.bird.body.velocity.y = -350;
    },

就想描述同样,当小鸟撞击的时候,高度直接为-350,往下来,若是撞击了=game over,这个是必然事件。哈哈,因此咱们往下来看看dom

// 游戏重新开始,
    restart_game: function() {
        //移除对象
        this.game.time.events.remove(this.timer);

       //重新开始游戏
        this.game.state.start('main');
    },

这里面的移除对象,移除的是上面的时钟对象(循环制造管道),就是不让他继续游戏了!函数

以后重新开始游戏,学习

从如今开始咱们将给管道进行添加,PS(刚刚一直在循环管道,可是管道的具体位置并无提到)this

// 添加管道的循环
    add_one_pipe: function(x, y) {
        // 获取第一组管道
        var pipe = this.pipes.getFirstDead();

        // 设置管道的X Y位置
        pipe.reset(x, y);

         // 添加管道的X轴速度精灵
        pipe.body.velocity.x = -200; 
               
        // 设置其他管道的不可见
        pipe.outOfBoundsKill = true;
    },

上面的代码实说,我第一组管道的制做方法,以及管道速度,兄弟管道(其他的管道)不能够看到spa

// 添加随机上下管道
    add_row_of_pipes: function() {
        var hole = Math.floor(Math.random()*5)+1;
        //
        for (var i = 0; i < 8; i++)
            if (i != hole && i != hole +1) 
                this.add_one_pipe(400, i*60+10);   
    
        this.score += 1;
		//分数更新统计
        this.label_score.content = this.score;  
		//分数结果,结束
    },
};

//添加游戏画布,游戏开始
game.state.add('main', game_state.main);  
game.state.start('main');

这是本文章最后的结尾,然而这仅仅只是Phaser.js的一小部分,想更多的了解 可让咱们一块儿沟通,学习进步.net

最后提供给你们这个游戏下载的地址 http://git.oschina.net/8946a/bird_-jumping  rest

相关文章
相关标签/搜索