安卓游戏开发基础与清单文件详解
1. 简单游戏开发与帧率无关移动
在游戏开发的初步阶段,我们完成了一个简单的游戏,用户只能看到屏幕上有一个图像从左向右移动,用户体验并不出色,但后续可以进行优化。在安卓系统中,游戏可以随时暂停和恢复, MyAwesomeGame 实现会调用 MySuperAwesomeStartScreen.pause() 和 MySuperAwesomeStartScreen.resume() 方法,并且只要应用程序暂停,主循环线程也会暂停。
不过,这里存在一个问题,即帧率相关的移动问题。假设用户设备能以 60FPS 运行游戏,每帧将 MySuperAwesomeStartScreen.x 成员增加 1 像素,那么在 100 帧后,像素图将前进 100 像素,大约需要 1.66 秒到达位置 (100,0)。而如果另一个用户在能以 30FPS 运行游戏的设备上玩,每秒像素图前进 30 像素,到达位置 (100,0) 则需要 3.33 秒。这会导致不同设备上游戏体验差异巨大,比如将像素图换成超级马里奥,在 60FPS 设备上马里奥的移动速度会是 30FPS 设备上的两倍。
为了解决这个问题,我们采用帧率无关移动的方法。不再每帧移动固定的像素量,而是指定每秒的移动速度。例如,我们希望像素图每秒前进 50 像素,同时还需要知道自上次移动像素图以来经过了多少时间,这就引入了 deltaTime 的概念,它表示自上次更新以来经过的时间。以下是 MySuperAwesomeStartScreen.update()
超级会员免费看
订阅专栏 解锁全文

22

被折叠的 条评论
为什么被折叠?



