我的玩家角色使用激活了根运动的 Animator 在世界各地移动。基本上,AI 系统在 Animator 上设置速度,进而控制控制角色运动的动画剪辑。由于这是一个标准功能,可以确保非常逼真的动画没有明显的滑动,我认为这是一个好主意......直到我添加了网络同步。
使用 NetworkTransform 和 NetworkAnimation 在网络上同步角色会导致这两个组件发生冲突:
- NetworkTransform 将角色移动到主机命令的任何位置。
- NetworkAnimator 同步动画变量并按照主机的指示播放动画剪辑,而这些动画剪辑也应用根运动。
结果是精确的(意味着角色到达了确切的目标目的地),但动作非常卡顿(明显的跳跃)。
移除 NetworkTransform,角色的主机和客户端实例会非常快速地去同步,这意味着当它们完全由依赖于时间的 Animator 控制时,它们最终将位于世界上的不同位置。
移除 NetworkAnimator,客户端实例将不会播放与主机相同的动画,如果有的话。
我尝试在禁用 Animator 的根动作的同时保留两个组件(仅在客户端上)。然而,在这种情况下,NetworkTransform 似乎根本没有插值。角色只是以大约 0.02 个单位的步长从同步位置跳到同步位置。与旋转相同。
NetworkTransform 配置为“同步变换”,因为角色既没有 RigidBody 也没有 CharacterController。所有其他值都是默认值:同步速率为 9(在那里也尝试了更高的值),移动阈值 0.001,捕捉阈值 5,插值移动 = 1。
如何在网络上获得流畅的根部运动?我希望这是一个标准的场景......