我的玩家角色在世界各地移动使用动画与根运动激活。基本上,人工智能系统设定动画的速度,反过来控制动画剪辑来控制人物的运动。由于这是一个标准的功能,以确保非常现实的动画不明显滑动,我认为这是一个好主意,...until我添加了网络同步。
使用NetworkTransform和NetworkAnimation对网络上的字符进行同步会导致这两个组件发生冲突:
结果是精确的(意味着字符到达了确切的目标目的地),但是非常口吃的移动(明显的跳跃)。
删除NetworkTransform,字符的主机和客户端实例去同步非常快,这意味着他们将结束在世界上的不同位置时,完全控制时间依赖动画。
如果删除NetworkAnimator,客户机实例将不会播放与主机相同的动画,如果有任何动画的话。
我尝试保留这两个组件,同时禁用动画的根运动(仅在客户端)。然而,在这种情况下,NetworkTransform似乎根本没有插值。该字符只是从同步位置跳转到同步位置,步骤约0.02单位。旋转也一样。
NetworkTransform被配置为“同步转换”,因为字符既没有RigidBody也没有CharacterController。所有其他值都是缺省值:同步率为9(也尝试过更高的值)、移动阈值为0.001、快照阈值为5、内插移动= 1。
如何在网络上获得流畅的根运动?我以为这是个标准的场景..。
发布于 2017-11-14 14:05:20
您需要的是在非本地实例上消除根运动标志,但也需要插值旋转,而不仅仅是运动。
此外,1的插值值似乎很高,与5的值相同:除非你没有使用1单位=1米的统一标准,否则这看起来不太现实。我将有一个25厘米(0.25)内插的运动和3度的旋转。同步速率9可能就足够了,但根据我的经验,它必须根据数据包丢失重新计算。
https://stackoverflow.com/questions/44829294
复制相似问题