首页 > 解决方案 > 如何在 Unity 中从目标对象后面跟踪摄像机

问题描述

我必须让相机从后面跟踪一个球体对象。相机应该在中间捕捉它,同时面向对象速度方向的相同方向。

并且相机和物体之间的距离应该始终相同。

我可以通过此代码使相机面向对象速度方向的相同方向。

Quaternion lookRotation = Quaternion.LookRotation(targetRb.velocity);
lookRotation.z = 0;
lookRotation.x = 0;
camera.transform.rotation = Quaternion.Lerp(camera.transform.rotation, lookRotation, 0.4f);

但我找不到如何计算相机应该在的位置。

你能告诉我怎么做吗?

标签: unity3d

解决方案


你可以添加例如

var targetPosition = targetRb.position - targetRb.velocity.normalized * DESIRED_OFFSET;
camera.transform.position = Vector3.Lerp(camera.transform.position, targetPosition, 0.4f);

它总是将相机移向DESIRED_OFFSET目标后面的位置单位。


或者,如果您真的希望球体始终固定在中心,您可以使用相机的当前方向

var targetPosition = targetRb.position - camera.transform.forward * DESIRED_OFFSET;
camera.transform.position = targetPosition;

或者你也可以Lerp再来一次。我想你必须尝试几个选项,看看最适合你想要的结果。


推荐阅读