如何使相机具有与对象相同的旋转但具有偏移(Unity)

Posted

技术标签:

【中文标题】如何使相机具有与对象相同的旋转但具有偏移(Unity)【英文标题】:How to make camera have same rotation as an object but with an offset (Unity) 【发布时间】:2021-08-29 15:20:37 【问题描述】:

所以我有一辆汽车和一个相机,到目前为止,这里是相机脚本:

 public GameObject car;
    public Vector3 offset;

    void Start()
    
        offset = transform.position - car.transform.position;
        
    

    // Update is called once per frame
    void FixedUpdate()
    
        transform.position = transform.position = Vector3.Lerp(transform.position, car.transform.position + offset, 0.8f);
    

这使相机随着汽车平滑移动,但现在我希望相机也具有与汽车相同的旋转,但具有起始偏移量。

【问题讨论】:

我建议您为此使用 Cinemachine。您可以使用 VirtualCamera 进行非常舒适的设置。平滑过渡、距离跟踪、旋转跟踪等。一切都很简单。 unity.com/unity/features/editor/art-and-design/cinemachine 【参考方案1】:

您可以以“相同”的方式存储原始增量旋转,例如

Quaternion offsetRotation;

private void Start ()

    offset = transform.position - car.transform.position;

    offsetRotation = transform.rotation * Quaternion.Inverse(car.transform.rotation);

后来

void FixedUpdate()

    transform.position = Vector3.Lerp(transform.position, car.transform.position + offset, 0.8f);

    transform.rotation = Quaternion.Slerp(transform.rotation, car.transform.rotation * offsetRotation, 0.8f);

【讨论】:

以上是关于如何使相机具有与对象相同的旋转但具有偏移(Unity)的主要内容,如果未能解决你的问题,请参考以下文章

在 3D 中反转旋转,使对象始终面向相机?

GLFW - 用鼠标旋转相机的视图矩阵使其旋转

如何使用rawpy对原始图像进行后处理,以与默认输出(如相机中的ISP)具有相同的效果?

Unity学习-相机的拉伸跟随旋转

以不同方向训练具有相同图像的模型

如何计算具有齐次变换矩阵的相机的视角? [PCL]