Unity 3D 中的相机抖动

时间:2021-06-14 00:24:36

标签: c# unity3d

我正在制作一款无尽的跑酷游戏,比如神庙逃亡。相机以一定的偏移量跟随玩家。当相机离玩家太近时,抖动变得非常明显。我认为当相机远离玩家时(在游戏开始时,尚未达到偏移量时),它仍然会抖动。

如何解决抖动?

相机代码:

private void Start()
    {
        tempPos = target.position;
        offset = transform.position - target.position;

    }

    // Update is called once per frame
    void LateUpdate()
    {

        Vector3 followPos = target.position - target.forward * trailDistance;
        followPos.y += heightOffset;
        tempPos += (followPos - transform.position) * cameraDelay;
        //var targetRotation = Quaternion.LookRotation(target.transform.position - transform.position);
        //transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, turnSpeed * Time.deltaTime);
        Vector3 smoothedPosition = Vector3.SmoothDamp(transform.position, tempPos, ref velocity, smoothSpeed);
        transform.position = smoothedPosition;
        transform.LookAt(target.transform);
   
    }

1 个答案:

答案 0 :(得分:0)

我使用了一种更简单的方法来做到这一点。它还具有很棒的平滑/延迟效果。这也是您在多人游戏场景中当代码由于延迟而非常紧张时使用的方法。

float delay = 2f;// Play around with me

void FixedUpdate() 
{
    Vector3 followPos = target.position - target.forward * trailDistance;
    transform.position = Vector3.Lerp(transform.position, followPos, delay);
}