0

我正在使用正交相机,它使用“UnitsPerPixel”设置为 0.333f 的 ScreenViewport,当我移动播放然后停止时,相机按预期追赶,但随后开始轻微晃动并在靠近时表现怪异(大约最后几个像素)。我只是使用基本的 lerp: cam.position.lerp(new Vector3(entityToFocusOn.getLocation().getX() + ArchipeloClient.PLAYER_SIZE / 2, entityToFocusOn.getLocation().getY() + ArchipeloClient.PLAYER_SIZE / 2, 0), deltatime);

这是它的样子:

在此处输入图像描述

另一个:

在此处输入图像描述

总的来说,不是很流畅。

PS 通常它比那个 gif 更糟糕。

4

1 回答 1

0

这是因为您无限期地在摄像机位置和玩家位置之间进行插值。解决此问题的一种快速方法是设置相机捕捉到玩家的阈值。

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

另一种解决方案是在您调整相机位置后将其调整为屏幕单位。有时这可能就像四舍五入到最接近的整数一样简单,但有时您必须考虑缩放。

于 2018-06-28T23:11:15.500 回答