1

我有一个依赖服务器的多人 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,并且正在寻找更多建议。

4

0 回答 0