3rd Person Camera Movement

So This Script does work but its extremely laggy when it zooms to the player can pls anyone improve thi script or help me.

using UnityEngine;

public class MouseLookAround : MonoBehaviour
{
    public Transform target;
    public float sensitivity = 15f;
    public float defaultDistance = 5.0f;
    public float minDistance = 2.0f;
    public float maxDistance = 10.0f;
    public LayerMask groundLayer;
    public float minHeight = 1.0f;
    public float maxHeight = 10.0f;

    private float currentX = 0.0f;
    private float currentY = 0.0f;
    private float distance;

    void Start()
    {
        distance = defaultDistance;
    }

    void LateUpdate()
    {
        if (target)
        {
            // Aktualisiere die Position der Kamera basierend auf der Position des Zielobjekts
            transform.position = target.position;

            currentX += Input.GetAxis("Mouse X") * sensitivity;
            currentY -= Input.GetAxis("Mouse Y") * sensitivity;
            currentY = Mathf.Clamp(currentY, -80f, 80f);

            Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);
            Vector3 desiredPosition = target.position - (rotation * Vector3.forward * distance);

            RaycastHit hitFromCamera;
            if (Physics.Raycast(target.position, desiredPosition - target.position, out hitFromCamera, Vector3.Distance(desiredPosition, target.position), groundLayer))
            {
                desiredPosition = hitFromCamera.point;
                distance = Mathf.Clamp(hitFromCamera.distance, minDistance, maxDistance);
            }
            else
            {
                distance = defaultDistance;
            }

            desiredPosition.y = Mathf.Clamp(desiredPosition.y, target.position.y + minHeight, target.position.y + maxHeight);

            transform.position = desiredPosition - transform.forward * distance;
            transform.LookAt(target);
        }
    }
}

1 Answer

1

The best solution is to use Cinemachine Camera to view it in 3rd person. You can find an example of a 3rd person camera with Cinemachine with Unity Game Kit.
Free Asset: https://assetstore.unity.com/packages/templates/tutorials/3d-game-kit-lite-135162
Unity Learn: 3D Game Kit Lite - Unity Learn