在Unity中,不使用子对象的方式让相机跟随物体移动,我们通过编写脚本来实现。下面放一个从工程中摘出来的的C#脚本示例,用于将相机绑定到一个Target对象上并跟随其移动:
using UnityEngine;  
  
public class FollowCamera : MonoBehaviour  
{  
    public Transform target; // 目标物体的Transform引用  
    public Vector3 offset;   // 相机相对于目标物体的偏移量  
  
    private Vector3 targetPosition; // 目标物体的当前位置  
    private void Start()
    {
        // 自动获得场景中事先布置的的偏移
        offset = this.transform.position - target.position;
    }
    
    void LateUpdate()  
    {  
        // 获取目标物体的当前位置  
        targetPosition = target.position;  
  
        // 计算相机的新位置  
        Vector3 newPosition = targetPosition + offset;  
  
        // 将相机移动到新位置  
        transform.position = newPosition;  
    }  
}
 
将上述脚本绑定到Camera物体上,Target选择要追踪的物体,即可完成跟随。如果是想要渐近的跟随,可以选择使用Lerp函数
特别注意的是,摄像机放在 LateUpdate() 生命周期函数中更为合适。在 Update() 和 LateUpdate() 之间,Unity隐藏地进行了动画的渲染之类的动作,我们自然是希望在正确渲染之后进行摄像机的帧画面采集的。这部分一般专门用于控制摄像机位移。

图-在 LateUpdate()下更新摄像机位置

图-在 Update()下更新摄像机位置(细微振动)



















