美文网首页
IT匠心说 - Java游戏开发《像素鸟》

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

作者: IT匠心说 | 来源:发表于2021-03-09 01:32 被阅读0次

游戏效果

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

一、准备素材

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

  • bg.jpg 背景图
  • bird_*.png 小鸟翅膀「上下煽动」的逐帧图
  • land.png 草地
  • pipe_*.png 管道

二、分解代码

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

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

  • Gdx.graphics.getWidth() 获取游戏窗口的「宽度」
  • Gdx.graphics.getHeight() 获取游戏窗口的「高度」
  1. 不断向左移动的草地。

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

具体实现:

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

  • 加载两块草地。

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

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

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

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

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

  • 动画1:含位置变化的中间过程。实际游戏时,则是瞬间完成位置变化的。
  • 动画2:去掉了位置变化的中间过程。
  • 动画3:实际游戏效果。
  1. 管道。

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

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

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

  1. 小鸟

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

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

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

三、代码预览

  • MyGdxGame.java
MyGdxGame.java
  • 小鸟:Bird.java
小鸟
  • 草坪:Land.java


    草坪
  • 管道:Pipes.java

管道

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

( 本节完 )

  • 相关阅读 >>

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

相关文章

网友评论

      本文标题:IT匠心说 - Java游戏开发《像素鸟》

      本文链接:https://www.haomeiwen.com/subject/fyxdqltx.html