unity, 同步物体坐标一定要在LateUpdate中进行

时间:2023-03-09 01:14:54
unity, 同步物体坐标一定要在LateUpdate中进行

设a为主动物体,b为跟随物体。

如果a,b都在同一个Update里更新坐标,那么两者自然是同步的。

如果a在a.Update里更新位置,而b在b.Update里将自己的位置更新为与a相同,那就会有误差。

而且即使a的运动非常缓慢平滑,b也会出现到处乱闪的情况(总之不是我们臆想得那样,b至多比a延迟一些而不会发生突变)。

解决办法是不在b.Update中同步位置,而是在b.LateUpdate中同步位置,这样就一点儿误差也没有了。

另外注意,这里a,b都是指普通物体。如果a或b是摄像机,还没研究过,先不轻易下结论。

--补充:

如果b包含particleSystem,而且(Simulation Space选的是local(其它没试)),那么如果只在LateUpdate中同步位置,某些情况下(比如Disable再Enable之后)粒子会变得不正常(抖动),经试验,需要在LateUpdate中同步位置的同时也在Update中同步。推测原因可能是因为particleSystem自身是在Update里更新的,而且在更新时会用到位置,所以我们应该在update时就把数据同步好。

综上,最把握的方法是:Update,LateUpdate甚至FixedUpdate中都同步。

另外注意,以上讨论都只是针对普通gameObject,至于camera是什么情况,还没深入试验过。