我正在使用一台使用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);
这是它的样子:
另一个:
总的来说,不是很顺利。P.S。通常它比那个gif更糟糕。
答案 0 :(得分:1)
这是因为您要在摄像机位置和播放器位置之间无限期插值。解决此问题的一种快速方法是为相机设置一个阈值,使其捕捉到播放器。
所以if distance is less than x then snap to player position and stop lerping
。这样,它就不会做微小的微动。
另一种解决方法是将相机的位置四舍五入,以使其位于屏幕单位内。有时,这可能很简单,例如四舍五入到最接近的整数,但其他时候则必须考虑缩放。