![]() |
1
3
不要用帧速率来测量时间。用时间来衡量时间。GC通过可能需要3/10秒,其他任务可能在后台启动等。 总有一个系统/设置运行速度比您想象的要慢。 然后不指定以像素为单位的速度,而是以像素/秒为单位。每一帧动画都需要一定的时间等。在游戏引擎中,当计算下一帧时,您的输入之一是“自上一帧以来经过了多少时间”。你将这个值确定为一秒的分数,然后用你的速度/秒乘以这个分数。结果是,从上一帧开始,给定的对象移动了多远。 请注意,真正缓慢的帧速率会对碰撞检测造成严重破坏,特别是对于快速移动的物体。如果物体1在两帧之间完全穿过物体2,只需检查bbox或radii就不会切割它。
说了这么多,sleep()是你的朋友。在帧处理开始时,调用
所以如果你想要最大20帧,那么每帧需要50毫秒(1000毫秒/20=50毫秒)。如果一个帧只需要10毫秒来模拟和渲染,那么在继续下一帧之前,您需要再睡上一个(50毫秒-10毫秒=)40毫秒。 或者,您可以继续尽可能快地运行模拟,并且只每隔一段时间渲染一次屏幕。这对电池寿命没有太大帮助(尽管OpenGL硬件加速很昂贵,如果我的EVO发出的热量是任何迹象的话),但可以使体验非常顺利。见鬼,你可以从那开始计算运动模糊。 |
![]() |
Murilo · Jetpack编写导航栏项目图标 4 月前 |
![]() |
KolaYAndr · 活动RESULT_OK似乎从未发生过 4 月前 |
![]() |
psycho_pat · Android应用程序中的权限 5 月前 |
|
FarazFiroz · 如何将argb转换为描述性文本颜色 5 月前 |
![]() |
Daniel · Unity Android游戏支持的设备数量太少 5 月前 |