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); } }