用Phaser框架做个flappybird小游戏(三)

这次来完成下一个场景的布置


  • 首先来定义下场景2,在完成页面效果前需要在场景管理器中定义一个场景play,并且添加到场景管理器中命名为sence2
    用Phaser框架做个flappybird小游戏(三)

  • 在sence2设计之前还需要将sence1的几个地方需要完善一下

  • 从sence1切换到sence2,是通过点击sence1中的按钮,上次我们只是简单的测试输出11111,现在我们修改下语句,使点击按钮效果为切换页面至sence2
    用Phaser框架做个flappybird小游戏(三)

  • 接下来我们设计sence2,先来看下需要做的页面效果
    用Phaser框架做个flappybird小游戏(三)

  • 可以看到点击按钮后,只有一只小鸟在动,其他图标和背景都是静止不动的。

  • 那么我们先将背景和小鸟都添加到场景里,由于在sence1中的preload中已经加载过了,现在就可以直接使用,只要加载其他图片就行了。

  • 加载完还是一样添加入场景并设置下图片的位置

用Phaser框架做个flappybird小游戏(三)

  • 到目前第二场的开头已经全部制作完毕,我们继续下步操作
    用Phaser框架做个flappybird小游戏(三)

  • 可以看到,在我们完成点击动作后,发生了几个变化:1.除小鸟外的图片都消失了;2.场景开始向左运动;3.小鸟往下掉落;4.小鸟顺时针翻转

  • 现在我们先来完成点击动作,这边要注意的是,点击后开始这个动作只有一次,不然再次点击又重新开始了,所以需要把add改为addonce

用Phaser框架做个flappybird小游戏(三)用Phaser框架做个flappybird小游戏(三)

  • 点级动作完成后,接下来我们将不需要的图标剔除,再让地板动起来。
  • 这边需要注意的是,上面我们在this.create=function ()中添加的背景为局部常量,不能再其他作用域中被访问到,so我们需要更改一下mybg为this.mybg,其他变量也是一样

用Phaser框架做个flappybird小游戏(三)用Phaser框架做个flappybird小游戏(三)

  • 现在让我们看下已经完成的效果:

用Phaser框架做个flappybird小游戏(三)

  • 下面我们来研究下怎么才能让小鸟坠落——物理引擎的开启
    用Phaser框架做个flappybird小游戏(三)

  • 这边需要注意的是,一开始小鸟是在空中飞的,没有下掉,这时的重力值为0。完成点击动作后小鸟才往下掉落,所以小鸟的重力值需要在startgame中修改

用Phaser框架做个flappybird小游戏(三)

  • 仔细观察,小鸟下掉的同时会顺时针旋转,这时候我们就需要通过this.bird.angle=90设置小鸟的倾斜角度来完成旋转动作
    用Phaser框架做个flappybird小游戏(三)
    用Phaser框架做个flappybird小游戏(三)
  • 可以看到在我们设置倾斜角度为90后,小鸟是突然间变成垂直的,但这不是我们想要的效果,那么怎么才能让小鸟缓慢的旋转呢?
  • 这时候我们需要将倾斜角度设置为自加,放置于实时更新的update中。
  • 而且一开始时小鸟并没有转动,我们需要在一开始设置一个变量this.startGameFlag = false用于标记游戏是否开始,当鼠标点击后再改为true

用Phaser框架做个flappybird小游戏(三)
用Phaser框架做个flappybird小游戏(三)

  • 到这里小鸟的重力设置完毕,但是小鸟不能穿透地板,所以地板的物理引擎也要开启。
  • 并且要判断小鸟是否碰到地板了。

用Phaser框架做个flappybird小游戏(三)
用Phaser框架做个flappybird小游戏(三)
用Phaser框架做个flappybird小游戏(三)

  • 到这里,我们先来看下今天制作的效果怎样。
    用Phaser框架做个flappybird小游戏(三)
  • 基本完成了场景二的开始阶段
  • 刚看到egret.js一款H5框架,也就是俗称的白鹭,也是不错的框架,最关键还是国人开发的,中文的API读起来应该还是挺方便的,好像还提有意思,下次可以研究下