UNITY3d摄影机跟随和背景移动不平滑



我刚学了一段时间Unity3d,然后我有一个关于相机跟随和背景移动不流畅的问题。我用ragidbody2d创建了一个立方体,然后我用两种不同的方法让相机跟随:a.我把相机放在立方体里b.我使用脚本来控制相机(后期更新使用)

我添加了一些图片,这些图片被转换成sprite(大小是1024*512)。我让他们后退。

当播放它时,两种方法都有相同的问题,背景移动不平滑,但一点也不完全平滑,它会不时出现。

我尝试了官方的2d例子,发现在快速移动的角色中,背景也不平滑。但Unity制作的一些游戏就像badland一样,当我玩的时候,没有这个问题。我不知道如何解决这个问题,相机配置好了吗?Scirpt?纹理类型?压缩方式?或者需要使用一些插件?请帮帮我,谢谢。

使用"LateUpdate"LateUpdate是在调用完所有Update函数之后调用的。这对于命令脚本执行非常有用。例如,跟踪摄影机应该始终在LateUpdate中实现,因为它跟踪可能在Update中移动的对象。

这可能是因为您使用的更新没有同步。

有主更新(每帧触发,两者之间的时间不同(time.deltaTime))、FixedUpdate(每一次物理更新都触发,这是一个固定的时间(time.fixedTime))和LateUpdate(每帧,但最后一帧)。

如果你试图跟踪受物理影响的刚体,建议将相机更新功能设置为Late-或FixedUpdate。

如果你在它的检查器中设置刚体的插值,你可以在更新功能中使用它:

rigidody每x个固定时间就会得到一次位置更新,当FixedUpdate只被调用一次时,update函数可以被触发5次,反之亦然。这将产生奇怪的结果,因此设置刚体插值将在这些未同步的更新之间平滑。

此外,可以使用Lerp方法平滑地移动相机。一个例子:

void Update() {
Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, targetPosition, Time.deltaTime * 5);
}

更多关于lerping这里

希望这能帮助

我发现了另一个问题,我根本不移动相机,只移动一个有一些图片作为背景的GameObject。移动游戏对象的脚本是

更新()

this.transform.Translate(Vector3.right * Time.deltaTime * 40.0f, Space.World);

Vector3 pos = this.transform.position;
pos.x += (100.0f * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position, pos, Time.deltaTime * 50);

reuslt是背景移动不平滑,有视觉滞后,但根本不完全平滑,它会不时出现。

是否存在某些配置错误?图形仿真还是别的什么?

最新更新