LibGDX:相机lerp在接近目标时抖动

时间:2016-11-17 23:21:59

标签: libgdx viewport orthographic linear-interpolation lerp

我正在使用一台使用ScreenViewport并将“UnitsPerPixel”设置为0.333f的正交相机,当我移动游戏然后停止时,相机会按预期赶上,但随后开始轻微摇晃并在接近时表现得很奇怪(周围最后几个像素)。我只是使用基本的lerp: cam.position.lerp(new Vector3(entityToFocusOn.getLocation().getX() + ArchipeloClient.PLAYER_SIZE / 2, entityToFocusOn.getLocation().getY() + ArchipeloClient.PLAYER_SIZE / 2, 0), deltatime);

这是它的样子:

enter image description here

另一个:

enter image description here

总的来说,不是很顺利。

P.S。通常它比那个gif更糟糕。

1 个答案:

答案 0 :(得分:1)

这是因为您要在摄像机位置和播放器位置之间无限期插值。解决此问题的一种快速方法是为相机设置一个阈值,使其捕捉到播放器。

所以if distance is less than x then snap to player position and stop lerping。这样,它就不会做微小的微动。

另一种解决方法是将相机的位置四舍五入,以使其位于屏幕单位内。有时,这可能很简单,例如四舍五入到最接近的整数,但其他时候则必须考虑缩放。