J'utilise un script qui me permet de déplacer ma caméra autour d'un objet prédéfini lors du click droit.
ça fonctionne très bien, mais j'aimerais apporter une modifications, et j'avoue ne pas savoir comment faire.
J'aimerais limiter le mouvement de zoom (géré par l'avance et recul de la molette de la souris).
En gros, pouvoir délimiter une zone qui empêcherais soit d'avancer, soit de reculer.
J'ai pensé à créer des Collider, mais je ne sais pas si il n'y a pas plus simple.
Merci d'avance de vos retours.
Voici mon script :
Code : Tout sélectionner
public class MouseOrbit : MonoBehaviour
{
public Transform target;
public float maxOffsetDistance = 2000f;
public float orbitSpeed = 15f;
public float panSpeed = .5f;
public float zoomSpeed = 10f;
private Vector3 targetOffset = Vector3.zero;
private Vector3 targetPosition;
void Start()
{
if (target != null) transform.LookAt(target);
}
void Update()
{
targetPosition = target.position + targetOffset;
if (target != null)
{
targetPosition = target.position + targetOffset;
// Right Mouse to Orbit
if (Input.GetMouseButton(1))
{
transform.RotateAround(targetPosition, Vector3.up, Input.GetAxis("Mouse X") * orbitSpeed);
float pitchAngle = Vector3.Angle(Vector3.up, transform.forward);
float pitchDelta = -Input.GetAxis("Mouse Y") * orbitSpeed;
float newAngle = Mathf.Clamp(pitchAngle + pitchDelta, 0f, 180f);
pitchDelta = newAngle - pitchAngle;
transform.RotateAround(targetPosition, transform.right, pitchDelta);
}
//Scroollwheel for zoom
transform.position += transform.forward * Input.GetAxis("Mouse ScrollWheel") * zoomSpeed;
}
}
}