IT匠心说 - Java游戏开发《像素鸟》

2021-03-09  本文已影响0人  IT匠心说

游戏效果

视频链接:https://www.bilibili.com/video/BV14v411h75H/

一、准备素材

core/assets/ 文件夹下准备以下图片:

二、分解代码

  1. 设置游戏名称、游戏宽高。
  1. 背景图。

背景图没有动画效果的要求。静止放置,撑满屏幕即可。

  1. 不断向左移动的草地。

我们不太可能有一张可以不断向左移动的、超级长的草地图片,因为我们的UI设计师并不能确定玩家可能会玩多久、究竟需要给程序员提供多长的草地图片。但我们却可以在代码层面,将短的草地图片不断的向后拼接,来获得一张看起来像是无限长的草地图片。

具体实现:

!!我们并没有真的先去拼接一个接近无限长的草地图片出来!! 即使代码上可以做到这一点,生成这张图片需要耗费的时间、承载游戏的设备性能也都还是个头疼的问题。而是只用到了两块草地,和一个解决类似场景的通用技巧。

代码中,两块草地的初始位置如下:

游戏开始后,两块草地会不断的向左移动。假设5秒后,两块草地的位置如下:

那么,在第10秒,左边的草地会完全移出屏幕左侧:

此时,玩家已经完全看不到它了。但我们不去销毁它、扔掉它,而是将其放至屏幕右侧,重复利用它。即:不断的将已经移出屏幕左侧、对玩家已经不可见的草地瞬移到屏幕右侧,让它可以继续向左移动。这样是不是只用两块草地,就能实现一个看起来无限长的移动草坪了呐。

为了方便大家理解这个小技巧。小匠做了3个演示动画。^_^#

  1. 管道。

管道的出现需要一定的随机性,如左右位置间隔、及上下两根管道之间的缝隙大小。

我们用定时器(可以随机时间,小匠这里暂时固定每5秒出现下次管道)来控制管道出现的时机,以实现管道之间的左右位置间隔。

再用一个随机数,来实现上下两根管道之间缝隙大小的随机。

  1. 小鸟

还记得我们准备了3张小鸟「上下煽动」翅膀的帧图嘛?

libGDX为我们提供了 Animation 类,来播放这样的帧图序列。

frameDuration 每两帧之间的时间间隔(秒)。

三、代码预览

MyGdxGame.java 小鸟 管道

如果大家有什么疑问,欢迎在评论区留言!或者私信给小匠噢。^_^#

( 本节完 )

IT匠心说 - Java游戏开发《预备篇》

上一篇 下一篇

猜你喜欢

热点阅读