像素鸟游戏开发(终极篇)

各位读者大家好,今天我们来探讨自制像素鸟游戏的最后需要完成的内容。

前两期的内容,我们分别完成了游戏的素材和核心对象的分析;以及游戏场景的布置,游戏对象小鸟的创建。今天我们来接着探讨后面的问题。

1、小鸟对象的坠落。

上期我们实现了让小鸟对象的自动飞翔的动画实现。接着我们来实现小鸟对象的坠落方式。

所谓的坠落,从物理上说,就是让小鸟按照自动落体的方式向下方移动。在C#的设计中,对象的位置是通过X轴,Y轴来对对象进行标记的。而0的坐标点是在窗体的左上角,因而我们要让小鸟实现坠落,就是实现小鸟在Y坐标轴上的绝对值越来越大。

因而我们,在实现上就是重新新建一个定时的控件timmer,这个定时器定时执行,不断获取到小鸟当前的Y坐标的数值,然后给小鸟的Y轴上不断减小减去35。代码如下图

这样就是实现了小鸟的坠落情况。

2、小鸟对象的上升。

实现小鸟对象的上升的原理,和下降的原理,基本一致,也是改变小鸟在Y轴上的坐标。代码如下图。

区别在于小鸟上升的触发,不是自动触发的而是,由玩家进行控制的。因而我们在窗体上新增代码,实现在窗体中点击鼠标左键或者点击键盘空格的时候,再去触发小鸟的上升事件。这样就实现了小鸟的上升。

3、让整个画面动起来。

当你实现了今天的1和2以后,你就完成了所有对于小鸟的操作。一启动程序,小鸟就会定时向下坠落,当你点击窗体的时候,小鸟就会上升。

但是你发现一个问题,小鸟只是在原地运动,而并未向前运动。这在这个游戏中,就用到了物理的相对参照物的概念。

其实在整个游戏中,小鸟就是在一个Y轴上上下调整而已,而给玩家的印象确实小鸟在向前飞翔。这是在人们的潜意识中是,水管是不会动的,而小鸟是运动的。所以给玩家的概念是小鸟在飞翔。

搞定清楚了这个问题,我们就知道如何实现画面运动起来,和1,2的原理一样,变更水管在X轴上的方向。我们再新增一个定时器,通过定时器,不断向左边移动水管即可。代码如下。

4、对于成功失败的判定。

以上的实现,基本就实现了游戏的大部分功能。现在我们来实现游戏的开始,游戏的开始比较容易实现。我们在设计界面的时候,将我们之前三个timer设定成为开始不启动,当用户点击开始按钮的时候,再启动定时器,同时将小鸟对象以及水管对象定位到游戏的初始位置。代码如下。

游戏失败的判定,在游戏中主要有三种。

1>小鸟的上升超出了游戏的上边界,即小鸟的Y坐标大于0,这时候判定游戏失败。

2>小鸟的坠落也小于了游戏的下面草地的坐标,也是小于Y坐标的某一值,这时候判定游戏失败。

3>小鸟碰到了上管或者下管。这也是定位小鸟的X坐标和Y坐标和,水管的坐标有重合的时候判定游戏失败。

4>坐标定位技巧,由于在游戏中,小奶是一个四方体,而不是一个坐标值,因而在判定上比较麻烦。在这里笔者使用的是小鸟的核心坐标点判定,也就是图片的中心点的坐标,要获得小鸟的中心点的坐标的实现,就是小鸟的坐标,X轴和Y轴各自添加小鸟的宽高的一半的值,就可获得小鸟的中心点坐标值。

5、实现每一次水管的不同高度。

做完了以上之后,就实现了小鸟跳过水管的游戏要求。但是目前我们的小鸟跳过的只是固定高度的管道,且只能跳过一个管道。

1>实现管道循环。

管道循环的实现,就是当管道一直向画面左边移动,当移动出画面之后。管道的X轴坐标,重新调整至画面的右方,这样就实现了管道的重复。

2>实现管道的上下不一。

要实现管道的上下不一,我们要用到的是随机数的算法。首先我们给两个管道之间的距离固定一个数值,在这个游戏中我们初始的距离是150px,那么整个画面中,整个高度减去地下的高度,减去中间的固定数值,剩下的就是两个管道的高度之和。

我们假设两个管道之和数字是600吧,那么我们就先取1到600的随机数字作为,上管道的高度,然后用600的总数减去上管道的高度,就获得到了下管道的高度。

每次当管道划出左边画面,跳转到又边画面的时候,我们就重新取一个随机数,计算一下管道的高宽,从而实现管道的高度调整。

3、游戏难度的增加。

左上角是有游戏得分的,如果游戏中两个管道的距离是固定不变的,那么整个游戏将没有难度。玩家就会一直玩下去,当然这也是很枯燥的。

因而我们,会有分数机制,随着玩家的不断游玩,游戏分数,会不断增加。随着玩家分数的增加,笔者实现的就是不断的减小,两个管道间的距离,增加玩家的难度,直至最终游戏结束。

当然,游戏设计者,也可以设计为,随着分数的提高,逐步增加管道向左移动的速度,来增加难度。

实现了这些内容,基本上像素鸟小游戏的所有内容,就全部完成了。笔者录制了一个游戏的游玩视频供大家查看。

相应的游戏的源码素材,笔者也会共享在百度云内供大家下载。

百度云的分享密码,大家只要在公众号内,给公众号发送“像素鸟”,既可以获得下载密码。谢谢合作。


9578246-1846f02134a775a6.png
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值