Finalement j'ai réussi à trouver un script qui faisait ce que je voulais.
Je l'ai étudié pour voir comment il fonctionnait et l'ai commenté pour pouvoir m'en servir et le modifier au besoin.
Par contre j'ai un soucis sur une fonction utilisée
A un moment du script il y a une fonction ClampAngle qui reçois trois paramètres et retourne un Mathf.Clamp
Voici la fonction en question
Code : Tout sélectionner
static function ClampAngle (angle : float, min : float, max : float) : float {
if (angle < -360.0)
angle += 360.0;
if (angle > 360.0)
angle -= 360.0;
return Mathf.Clamp (angle, min, max);
}
Même en ayant cherché sur le scripting reference :
http://docs.unity3d.com/Documentation/S ... Clamp.html , J'ai du mal à saisir le but de cette fonction.
Si quelqu'un pouvait me l'expliquer ce serait super.
Pour info voila le script que j'ai commenté en français, si ça peux être utile à qqn d'autres alors tant mieux
PS : il n'y a que la rotation, il faut implémenter le mouvement, mais ça, c'est de loin le plus simple à mettre dans ce genre de script
Code : Tout sélectionner
@script AddComponentMenu ("Camera-Control/Mouse Look JS")
//variables publiques
var sensitivityX : float = 5; //reglage de la sensibilité de la souris en x
var sensitivityY : float = 5; //reglage de la sensibilité de la souris en y
var minimumX : float = -360; //le min et max de rotation que l'on peux avoir sur x
var maximumX : float = 360;
var minimumY : float = -60; //le min et le max de rotation que l'on peux avoir sur y
var maximumY : float = 60;
//variables privées
private var rotationX : float = 0; //la rotation de depart en x
private var rotationY : float = 0; //la rotation de depart en y
private var originalRotation : Quaternion; //Quaternion contenant la rotation de départ
function Start () {
originalRotation = transform.localRotation; //la rotation de depart est la rotation locale du transform
}
function Update () {
//on recupere les getaxis de la souris, on multiplie par la sensibilité et on calcule la rotation
rotationX += Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationX = ClampAngle (rotationX, minimumX, maximumX);
rotationY = ClampAngle (rotationY, minimumY, maximumY);
//on prepare la rotation en x autour de l'axe y
var xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
//on prepare la rotation autour de l'axe x
var yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
//on effectue la rotation
transform.localRotation = originalRotation * xQuaternion * yQuaternion;
}
static function ClampAngle (angle : float, min : float, max : float) : float {
if (angle < -360.0)
angle += 360.0;
if (angle > 360.0)
angle -= 360.0;
return Mathf.Clamp (angle, min, max);
}
En tout cas merci à tous de m'avoir aidé