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

这次我们的任务是控制点击鼠标让小鸟飞起来当游戏刚开始时小鸟就需要开始起飞了,所以我们的需要在startgame中添加一个监听然后创建一个fly功能仔细分析一下飞行动作拆封成两点 1.一个为小鸟头部向上扬起;2.小鸟向上运动我们先来解决小鸟头部向上扬起这个动作,这个动作需要在我们反复点击的同时,小鸟也是反复的上下仰头,所以我们就需要用到sence1中用过的tween1动作解决了,那...
摘要由CSDN通过智能技术生成
  • 这次我们的任务是控制点击鼠标让小鸟飞起来
  • 当游戏刚开始时小鸟就需要开始起飞了,所以我们的需要在startgame中添加一个监听
  • 然后创建一个fly功能
    在这里插入图片描述
    在这里插入图片描述
  • 仔细分析一下飞行动作拆封成两点 1.一个为小鸟头部向上扬起;2.小鸟向上运动
  • 我们先来解决小鸟头部向上扬起这个动作,这个动作需要在我们反复点击的同时,小鸟也是反复的上下仰头,所以我们就需要用到sence1中用过的tween
    在这里插入图片描述
  • 1动作解决了,那么2呢,小鸟向上运动这个动作。需要注意的是,这边不能用修改重力来实现这个操作,因为重力是恒定的,修改完后小鸟就一直往上飞,不会掉下来了。
  • 这时候我们需要额外给小鸟施加一个作用力velocity,这个力是一次性的
    在这里插入图片描述
  • 完成后我们来看下效果
    在这里插入图片描述
  • 还行把,优化操作可以后面结合整体再调整,接下来我们来看下如何设置障碍物
  • 首先还是先加载图片,管道和小鸟一样都是有序列帧的所以加载方式一样
    在这里插入图片描述
  • 在看下原版游戏,分析一下下部操作
    在这里插入图片描述
  • 可以看到,管道分为上下两个,并且是同时出现的,那么上下两个管道应该为一个组,所以我们先添加一个组,放入play场景中。
  • 并且要开启body属性
  • 这边要注意加载管道要放在加载地板前面,这样就有管道埋入地板的感觉
    在这里插入图片描述
  • 接下来就可以设置管道了,这边需要注意制作管道如果放在update中,没有办法控制生成的间隔时间。
  • 所以我们需要在startgame中设置一个计时器
    在这里插入图片描述
  • 然后我们来完成makePipe功能,分析一下
  • 上下管道间需要留有空隙,让小鸟通过。我们计算一下得出空隙的合理位置为85-320之间,并且得出上下管道的位置
    在这里插入图片描述
  • 接下来我们添加上下管道
    在这里插入图片描述
  • 接下来我们让管道动起来,给他施加一个x轴的作用力
    在这里插入图片描述
  • 接下来让我们看下目前制作的效果
    在这里插入图片描述
  • 好吧,我知道我好菜,第一个管道都没过。
  • 完整代码为:
// const game = new Phaser.Game(游戏界面宽度,游戏界面的高度,渲染方式,盒子ID)
const game = new Phaser.Game(320,505,Phaser.AUTO,"game")
// 在game对象里面添加一个gameStates属性,这个属性默认是空,用来放置游戏的场景 ps所有符号必须是英文

//场景管理器
game.gameStates={
    }

//游戏场景管理器,game的gameStates场景管理器里面,放入一个menu场景
game.gameStates.menu=function(){
   
    // menu是一个场景
    // 一个合法场景必须有以下三个功能中的一个
    this.preload=function(){
   
        // game.load.image(名称,路径)
        game.load.image('background',"assets/background.png")
        game.load.image('ground',"assets/ground.png")

        // 小鸟的加载game.load.spriteSheet(命名,图片位置,宽度,高度,帧数)
        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")

    }   //加载资源
    //所有资源在perload中加载,在create里创建

    this.create=function(){
   
        // const bg=game.add.tileSprite(X轴位置,Y轴位置,宽度,高度,对象)
        const mybg=game.add.tileSprite(0,0,game.width,game.height,'background')    //tileSprite瓷砖精灵,背景拼接
        const ground=game.add.tileSprite(0,game.height-112
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值