我刚学习Unity3d一段时间,然后我有一个关于相机跟随和背景移动不顺畅的问题。我用ragidbody2d创建一个立方体,然后我使用两种不同的方法来制作相机: 一个。我在立方体中制作相机 湾我使用脚本来控制相机(使用后期更新)
我添加了一些转换为精灵的图片(大小为1024 * 512)。我让他们背景。
播放时,两种方法都有同样的问题,背景移动不顺畅,但根本不完全平滑,它会不时出现。我尝试了在快速移动角色中发现的官方2D示例,背景也不顺畅。但是有一些像Unity这样的Unity制作的游戏,当我玩它时,没有这个问题。我不知道如何解决这个问题,相机是否配置好了? Scirpt?纹理的类型?压缩方式?或者需要使用一些插件? 请帮帮我。谢谢。
答案 0 :(得分:1)
可能是因为您正在使用的更新未同步。
主要更新(触发每个帧,它们之间的时间不同(Time.deltaTime)),FixedUpdate(触发每个物理更新,这是固定时间(Time.fixedTime))和LateUpdate(每帧,但是在最后一次。)
如果您正在尝试跟随受物理影响的刚体,建议将摄像机更新功能设置为Late-或FixedUpdate。
如果在其检查员中设置刚体的插值,则可以在更新功能中使用它:
每次x固定时间都会对其位置进行更新,当FixedUpdate只被调用一次时,Update函数可以被触发5次,反之亦然。这将产生奇怪的结果,因此设置刚体插值将使那些未同步的更新之间的事情变得平滑。
此外,您可以使用Lerp方法平滑移动相机。一个例子:
void Update() {
Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, targetPosition, Time.deltaTime * 5);
}
有关lerping here
的更多信息希望这有帮助
答案 1 :(得分:1)
使用" LateUpdate" 在调用所有Update函数后调用LateUpdate。这对于命令脚本执行很有用。例如,跟随摄像机应始终在LateUpdate中实现,因为它跟踪可能已在Update内移动的对象。
答案 2 :(得分:0)
我发现另一个问题是我根本不移动相机,只需移动一个游戏对象,其中有一些图片作为背景。移动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是背景移动不平滑且视觉滞后,但根本不完全平滑,它会不时出现。
是否有一些配置错误?图形仿真?还是其他什么?