using UnityEngine; public class SimpleCameraZFollow : MonoBehaviour { [Header("Camera Settings")] [SerializeField] private float fixedXPosition = 0f; [SerializeField] private float fixedYPosition = 10f; [SerializeField] private float zOffset = -10f; [SerializeField] private float smoothSpeed = 5f; [SerializeField] private bool lockRotation = true; private Transform target; private void Start() { FindPlayerTarget(); } private void FindPlayerTarget() { var players = FindObjectsByType(FindObjectsSortMode.None); foreach (var player in players) { if (player.IsOwner) { target = player.transform; Debug.Log($"[Camera] Target found: {player.name}"); return; } } Invoke(nameof(FindPlayerTarget), 0.5f); } private void LateUpdate() { if (target == null) return; Vector3 targetPos = target.position; Vector3 desiredPosition = new Vector3(fixedXPosition, fixedYPosition, targetPos.z + zOffset); transform.position = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime); if (!lockRotation) { transform.LookAt(target); } } }