Voilà je suis en train de réaliser les mouvements d'un petit sous marin.
J'ai réussi à simuler les réactions d'un objets sous l'eau, mon sous marin se déplace etc.
Désormais je voudrais limiter la rotation de ce dernier sur l'axe x (car un sous marin ne peut pas plonger en piquet ou autre).
Concernant mes objets, je dispose d'une caméra mise derrière le sous-marin( qu'on pourra déplacer, vue intérieur etc), et donc d'un sous-marin (simuler par un cube faute de modèle :p). Les deux étant reliés par un Fixed joint.
Les directions du sous marins sont prise en compte via la souris (donc si on vise sur la gauche, le sous marin tourne le nez vers la gauche etc).
Voici un bout de code, j'ai récupérer des élements un peu partout et réussis à bouiner quelque chose qui fonctionne:
Code : Tout sélectionner
//Déclararion de Variable et autre ...
rotation.z = Mathf.SmoothDampAngle(rotation.z, -horizontal * rollMax, ref velocity, rollSmooth);
transform.Rotate(Vector3.up, horizontal*(rotation.z % 90) / 90 * vertical, Space.World);
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
Vector3 targetPoint = ray.GetPoint(hitdist);
Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, sensibiliteSouris*Time.deltaTime);
//On applique les forces, on effectue les mouvements...
Quelqu'un aurait une idée pour limiter la rotation en x de n degrés ?
Amicalement,
Doli
EDIT: J'ai finalement trouvais une solution à mon problème sur le projet Penelope (le script RotationConstraint).