38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using UnityEngine;
|
|
|
|
public class CameraFollow : MonoBehaviour
|
|
{
|
|
public Transform target; // 角色的Transform组件
|
|
public Vector3 offset; // 摄像机相对于角色的偏移量
|
|
public float smoothSpeed = 0.125f; // 摄像机移动的平滑速度
|
|
|
|
[Header("边界限制")]
|
|
public bool enableBounds = true; // 是否启用边界限制
|
|
public float minX = -6f; // X轴最小边界
|
|
public float maxX = 6f; // X轴最大边界
|
|
public float minZ = -30f; // Z轴最小边界(摄像机位置,不是主角位置)
|
|
public float maxZ = 91f; // Z轴最大边界(摄像机位置,不是主角位置)
|
|
|
|
private void LateUpdate()
|
|
{
|
|
if (target == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Vector3 desiredPosition = target.position + offset;
|
|
|
|
// 边界限制:摄像机停在边界处,主角可以继续移动
|
|
if (enableBounds)
|
|
{
|
|
desiredPosition.x = Mathf.Clamp(desiredPosition.x, minX, maxX);
|
|
desiredPosition.z = Mathf.Clamp(desiredPosition.z, minZ, maxZ);
|
|
}
|
|
|
|
transform.position = Vector3.Lerp(
|
|
transform.position,
|
|
desiredPosition,
|
|
smoothSpeed);
|
|
}
|
|
}
|