我正在使用SDL制作2D游戏。有一件事一直困扰着我,那就是当相机缓慢移动时,所有的物体都会相对抖动。
这是因为SDL不支持亚像素定位,我必须使用整数在屏幕上定位。
这是一个问题的快速示例,以防它还不明显。假设我有一个侧滚游戏,每个实体只有一个x位置:
实体职位:
friend.x = 0.1
foe.x = 0.3
渲染内容:
friend.x = 0
foe.x = 0
现在假设相机向左移动
0.2
:
实体职位:
friend.x = 0.1 + 0.2 = 0.3
foe.x = 0.3 + 0.2 = 0.5
渲染内容:
friend.x = 0
foe.x = 1
在那里,它抖动。两者都应该移动得很小,但呈现的是
friend
根本没动,而且
foe
向右跳了整整一个像素。当相机移动另一个时
0.2
向左,
朋友
会跳
敌人
将保持静止。不幸的是,在低速行驶的情况下,它实际上非常明显。
缓解这一问题的最简单方法似乎是在内部使用整数位置,但我无法真正让它在我的游戏中发挥作用,只是在物理方面不太好。我在绝望中尝试了各种舍入方法,但这在实践中似乎没有任何改变。四舍五入时仍有这个跳跃点。
那么,我能做些什么来减少抖动吗?假设我被两个浮点位置卡住了,并且在渲染时必须处理整数?