首页 文章

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

提问于
浏览
-1

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

我添加了一些转换为精灵的图片(大小为1024 * 512) . 我让他们背景 .

播放时,两种方法都有同样的问题,背景移动不顺畅,但根本不完全平滑,它会不时出现 .

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

3 回答

  • 0

    这可能是因为您正在使用的更新未同步 .

    主要更新(触发每个帧,它们之间的时间不同(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

    我发现另一个问题是我根本不移动相机,只需移动一个GameObject,它有一些图片作为背景 . 移动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是背景移动不顺畅的视觉滞后,但根本不完全平滑,它会不时出现 .

    是否有一些配置错误?图形仿真?还是其他什么?

  • 1

    使用“LateUpdate”在调用所有Update函数后调用LateUpdate . 这对于命令脚本执行很有用 . 例如,跟随摄像机应始终在LateUpdate中实现,因为它跟踪可能已在Update内移动的对象 .

相关问题