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