zoukankan      html  css  js  c++  java
  • 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是什么情况,还没深入试验过。

  • 相关阅读:
    c/c++(c++和网络编程)日常积累(二)
    docker日常积累
    c/c++日常积累
    qt日常积累
    YUV相关积累
    02-asio学习
    01--c实现基础客户端和服务端与c++ boost.asio实现对比
    webrtc学习笔记积累
    linux-日常工作积累
    用Java链接SQL Server
  • 原文地址:https://www.cnblogs.com/wantnon/p/5617834.html
Copyright © 2011-2022 走看看