- 这次我们的任务是控制点击鼠标让小鸟飞起来
- 当游戏刚开始时小鸟就需要开始起飞了,所以我们的需要在startgame中添加一个监听
- 然后创建一个fly功能
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/20f21a0551687948de00f9db7878a385.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b36d25531f6d6a18c050976d873fb039.png)
- 仔细分析一下飞行动作拆封成两点 1.一个为小鸟头部向上扬起;2.小鸟向上运动
- 我们先来解决小鸟头部向上扬起这个动作,这个动作需要在我们反复点击的同时,小鸟也是反复的上下仰头,所以我们就需要用到sence1中用过的tween
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8689580261249042f34a7ab400814308.png)
- 1动作解决了,那么2呢,小鸟向上运动这个动作。需要注意的是,这边不能用修改重力来实现这个操作,因为重力是恒定的,修改完后小鸟就一直往上飞,不会掉下来了。
- 这时候我们需要额外给小鸟施加一个作用力velocity,这个力是一次性的
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/776ad0b2d9a2d087337fe62981cc5d3e.png)
- 完成后我们来看下效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fa78848837e9b16c531a7c3af3f63c0c.gif)
- 还行把,优化操作可以后面结合整体再调整,接下来我们来看下如何设置障碍物
- 首先还是先加载图片,管道和小鸟一样都是有序列帧的所以加载方式一样
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2630ebf4993b81cb5c9e157eaeda717e.png)
- 在看下原版游戏,分析一下下部操作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9b895ed96304d7bc61cb7971b5398b6e.png)
- 可以看到,管道分为上下两个,并且是同时出现的,那么上下两个管道应该为一个组,所以我们先添加一个组,放入play场景中。
- 并且要开启body属性
- 这边要注意加载管道要放在加载地板前面,这样就有管道埋入地板的感觉
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ed3a5188f4ef996377a6470e517437b2.png)
- 接下来就可以设置管道了,这边需要注意制作管道如果放在update中,没有办法控制生成的间隔时间。
- 所以我们需要在startgame中设置一个计时器
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3db78d5632eabb3ec4c04568b03fa51d.png)
- 然后我们来完成makePipe功能,分析一下
- 上下管道间需要留有空隙,让小鸟通过。我们计算一下得出空隙的合理位置为85-320之间,并且得出上下管道的位置
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/531fdb98081e1ee994fc8233964395c8.png)
- 接下来我们添加上下管道
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9b17ced0ccd78a0bd9173a2262b42c64.png)
- 接下来我们让管道动起来,给他施加一个x轴的作用力
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b9dc5eeda1eee0268b14281e92106eb6.png)
- 接下来让我们看下目前制作的效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c014bd1e1f4643bc9cbcbbda2e500480.gif)
- 好吧,我知道我好菜,第一个管道都没过。
- 完整代码为:
const game = new Phaser.Game(320,505,Phaser.AUTO,"game")
game.gameStates={
}
game.gameStates.menu=function(){
this.preload=function(){
game.load.image('background',"assets/background.png")
game.load.image('ground',"assets/ground.png")
game.load.spritesheet('bird','assets/bird.png',34,24,3)
game.load.image('title',"assets/title.png")
game.load.image('btnImg',"assets/start-button.png")
}
this.create=function(){
const mybg=game.add.tileSprite(0,0,game.width,game.height,'background')
const ground=game.add.tileSprite(0,game.height-112