using UnityEngine;
using UnityEngine.InputSystem;
public class ThirdPersonCamera : MonoBehaviour
{
[SerializeField]
private Transform target;
[SerializeField]
private InputActionReference lookAction;
[SerializeField]
private float distance = 5f;
[SerializeField]
private float height = 1.8f;
[SerializeField]
private float sensitivity = 1f;
[SerializeField]
private float smoothness = 12f;
[SerializeField]
private LayerMask obstacles;
private float yaw;
private float pitch;
void LateUpdate()
{
Vector2 look =
lookAction.action.ReadValue<Vector2>();
yaw += look.x * sensitivity;
pitch -= look.y * sensitivity;
pitch =
Mathf.Clamp(
pitch,
-30f,
70f
);
Quaternion rotation =
Quaternion.Euler(
pitch,
yaw,
0f
);
Vector3 origin =
target.position +
Vector3.up * height;
Vector3 desiredPosition =
origin +
rotation *
Vector3.back *
distance;
transform.position =
Vector3.Lerp(
transform.position,
desiredPosition,
smoothness *
Time.deltaTime
);
transform.LookAt(origin);
}
}