我有一个服务器依赖的多人Unity3D游戏,其中服务器是用Node.js编写的 . 服务器向玩家的位置发送更新,并且玩家向客户端上的那些位置发送lerp以模拟平滑移动 . 我没有使用Unity物理进行玩家移动 . 我每秒大约有20个数据包更新,因此我使用每个更新之间的时间除以0.12秒的lerp间隔 .

我用来计算玩家移动的deltaTime的代码是:

lerpValue = Mathf.Clamp01((DateTime.UtcNow.Millisecond - lastPacket.UpdateTime) / 120;
myTransform.position = Vector3.Lerp (myTransform.position, lastPacket.Pos, lerpValue);

这似乎可以平滑玩家的运动,但是我无法让摄像机始终如一地顺利跟随玩家 . 我在LateUpdate中使用Time.deltaTime进行相机平滑 . 这使它变得不稳定,生涩和口吃 . 我也希望相机在播放器后面稍微有点晃动,所以如果播放器运动结果不合适,相机就不会 .

我尝试打开和关闭VSync,将玩家移动到FixedUpdate,并将相机从LateUpdate移动到FixedUpdate,我正在寻找更多建议 .