【问题标题】:Jittery camera movement in Unity 3DUnity 3D 中的抖动相机移动
【发布时间】:2021-06-14 00:24:36
【问题描述】:

我正在制作一个无尽的跑步游戏,比如 Temple Run。相机在偏移处跟随玩家。当相机离玩家太近时,抖动变得非常明显。我认为当相机远离玩家时(在游戏开始时,尚未达到偏移量时),它仍然是抖动的。

如何解决抖动问题?

摄像头代码:

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);
   
    }

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

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

    float delay = 2f;// Play around with me
    
    void FixedUpdate() 
    {
        Vector3 followPos = target.position - target.forward * trailDistance;
        transform.position = Vector3.Lerp(transform.position, followPos, delay);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多