【问题标题】:Camera jitter in unity when setting position in Update, and setting camera rotation in LateUpdate在Update中设置位置时相机抖动统一,在LateUpdate中设置相机旋转
【发布时间】:2021-03-01 17:22:39
【问题描述】:

我知道这是一个经常被问到的问题,但是我还没有找到适合我的具体情况的解决方案:

我正在创建一个服务器权威游戏,服务器计算运动并以Vector3的形式发送给客户端。这个 Vector3 在接收时存储在一个变量中,并且在更新时,位置设置为等于 Vector3。

相机旋转是客户端授权的,旋转是根据鼠标增量计算的,并添加到当前旋转中。 Y 轴旋转应用于整个身体(转动),X 轴旋转应用于相机(上下查看)。这都是后期更新完成的

当移动并查看一个对象时,它似乎抖动得非常快。我发现的所有解决方案都不起作用,我认为这是因为它们旨在通过刚体运动来修复相机抖动

【问题讨论】:

  • 您能否发布您的代码并添加一段视频,说明您在说什么抖动?我认为问题可能只是您如何从服务器/网络延迟中获取值..您可能应该添加某种插值(Vector3.LerpVector3.MoveTowards 等)

标签: c# unity3d


【解决方案1】:

当涉及物理、旋转、位置和其他相关内容时,更推荐使用FixedUpdate 而不是Update

这是为什么?

https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html

嗯,Fixed Update 它被称为固定帧率帧,对于物理来说更可靠。

【讨论】:

  • 但是当我对相机使用 FixedUpdate 时,它​​看起来好像在旋转时帧速率较低
  • 尝试对播放器的位置使用 FixedUpdate,对相机使用 Update。还可以尝试将相机的位置设置在服务器之外
猜你喜欢
  • 2013-05-06
  • 2014-03-20
  • 2020-11-24
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 2017-06-07
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多