Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 平滑摄影机跟随对象_C#_Unity3d_Unity5_Vsync_Lerp - Fatal编程技术网

C# 平滑摄影机跟随对象

C# 平滑摄影机跟随对象,c#,unity3d,unity5,vsync,lerp,C#,Unity3d,Unity5,Vsync,Lerp,我有一个依赖服务器的多人Unity3D游戏,其中服务器是用Node.js编写的。服务器将更新发送到玩家的位置,玩家将lerp发送到客户端上的这些位置,以模拟平滑移动。我不会用统一物理来做球员的动作。我每秒大约有20次数据包更新,所以我使用每次更新之间的时间除以0.12秒的lerp间隔 我用来计算玩家移动的延迟时间的代码是: lerpValue = Mathf.Clamp01((DateTime.UtcNow.Millisecond - lastPacket.UpdateTime) / 120;

我有一个依赖服务器的多人Unity3D游戏,其中服务器是用Node.js编写的。服务器将更新发送到玩家的位置,玩家将lerp发送到客户端上的这些位置,以模拟平滑移动。我不会用统一物理来做球员的动作。我每秒大约有20次数据包更新,所以我使用每次更新之间的时间除以0.12秒的lerp间隔

我用来计算玩家移动的延迟时间的代码是:

lerpValue = Mathf.Clamp01((DateTime.UtcNow.Millisecond - lastPacket.UpdateTime) / 120;
myTransform.position = Vector3.Lerp (myTransform.position, lastPacket.Pos, lerpValue);
这似乎可以让球员的动作变得流畅,但我无法让相机始终平稳地跟随球员。我在LateUpdate中使用Time.deltaTime进行相机平滑。这使它变得颠簸、急促和结巴。我也希望相机在播放器后面有一点抖动,所以如果播放器的动作不连贯,相机不会


我已尝试打开和关闭VSync,将播放器移动移动到FixeUpdate,并将相机从LateUpdate移动到FixeUpdate,我正在寻找更多建议。

尝试使用lerp%,而不是基于相机上的上次更新数据包间隔。e、 g.
camera.pos=Lerp(camera.pos、player.pos、Time.deltaTime)
。当玩家四处移动时,它会有一些“反弹”(因为每一帧只有2%的移动距离接近玩家),它应该是平滑的。向上调整百分比(例如,
Time.deltaTime*4
)将使其更具响应性。当倍增器接近你的帧速率时,它将再次变得起伏,因为它实际上与你现在所做的一样。两个极端之间的一些值应该足够了。播放它,看看它是否有效。尝试使用lerp%而不是基于相机上的最后更新数据包间隔。e、 g.
camera.pos=Lerp(camera.pos、player.pos、Time.deltaTime)
。当玩家四处移动时,它会有一些“反弹”(因为每一帧只有2%的移动距离接近玩家),它应该是平滑的。向上调整百分比(例如,
Time.deltaTime*4
)将使其更具响应性。当倍增器接近你的帧速率时,它将再次变得起伏,因为它实际上与你现在所做的一样。两个极端之间的一些值应该足够了。玩它,看看它是否有效。