在我的多人浏览器游戏中,当我的玩家使用相机后,我看到相机卡顿。玩家位置是从服务器接收到的,玩家会移动到那个位置,我的目标是让相机通过自己的额外平滑平滑地跟随玩家。
您可以在http://orn.io找到我的游戏以查看当前状态,没有平滑跟随相机 lerping,这更好,但会导致运动不稳定并让人头疼。相机的当前代码如下:
void LateUpdate ()
{
if (Target == null) {
return;
}
currentScale = Mathf.Lerp(currentScale, -GameManager.TotalMass, Mathf.Clamp01 (Time.deltaTime * heightDamping));
Vector3 h = currentScale * 2f * Target.up;
Vector3 f = currentScale * 3f * Target.forward;
// tried lerping to this value but it causes choppy stutters
Vector3 wantedPosition = new Vector3(Target.position.x, Target.position.y, currentScale * 2) + h + f;
myTransform.position = wantedPosition;
myTransform.LookAt (Target, -Vector3.forward); // world up
}
我已经尝试了几天来修改这些值,使用固定时间戳,将相机移动置于 FixedUpdate/Update 中,使用 MoveTowards 和其他更改,但仍然遇到问题。
我的部分问题是玩家位置在 lerp 中间发生了变化,这会导致卡顿,因为目标位置在 lerp 中间发生了变化。由于 lerp 的目标位置在 lerp 的中间发生变化,这会导致相机跳跃/抖动,并由于 LookAt 而抖动。
如果有人能提出一种改进相机的方法,我将不胜感激,因为它现在的代码。