Unity 让相机逐个看向目标点
时间: 2023-08-06 07:06:10 浏览: 85
你可以使用以下代码将 Unity 中的相机逐个看向目标点:
```csharp
using UnityEngine;
public class CameraLookAt : MonoBehaviour
{
public Transform[] targets;
public float transitionDuration = 1f;
private int currentTargetIndex = 0;
private float transitionTimer = 0f;
void Update()
{
if (targets.Length == 0)
return;
// 计算当前目标点和下一个目标点的方向
Vector3 targetDirection = (targets[currentTargetIndex].position - transform.position).normalized;
// 计算相机当前的朝向
Quaternion currentRotation = transform.rotation;
// 计算相机需要旋转到的目标朝向
Quaternion targetRotation = Quaternion.LookRotation(targetDirection);
// 使用插值函数平滑过渡相机朝向
transitionTimer += Time.deltaTime;
float t = Mathf.Clamp01(transitionTimer / transitionDuration);
transform.rotation = Quaternion.Slerp(currentRotation, targetRotation, t);
// 当过渡完成时,切换到下一个目标点
if (t >= 1f)
{
transitionTimer = 0f;
currentTargetIndex = (currentTargetIndex + 1) % targets.Length;
}
}
}
```
在这个示例中,你需要在 Unity 编辑器中将目标点(Transform)分配给 `targets` 数组。相机将按照数组中的顺序逐个看向这些目标点。你还可以调整 `transitionDuration` 变量来控制相机过渡的速度。
阅读全文