Animer un système d'amortissement complexe sans se prendre la tête

Tous les tutoriaux unity, de la communauté ou d'ailleurs.
Avatar de l’utilisateur
LaGriffe
Messages : 41
Inscription : 01 Avr 2016 13:49

Animer un système d'amortissement complexe sans se prendre la tête

Message par LaGriffe » 17 Avr 2016 14:52

Le Wheel Collider fournit par Unity est un outil précieux pour tout ceux qui souhaitent gérer des véhicules à roues. De multiples tutoriels illustrent leur utilisation et la façon de les coupler visuellement avec des roues.
Dans le cas d'un train d'atterrissage avec de nombreux éléments en mouvements, cela peut d'avérer délicat. Diverses façon de faire existent, j'ai choisi celle qui me semble la plus simple et nécessitant un minimum de lignes de codes et en quatre étapes, inspirée de mon expérience de moddeur pour Lock-On.

Première étape
Je crée une animation d'une durée d'une seconde - soit 60 trames tels que configurés par défaut - avec point de départ à 0 - la position du train en position détendue - et à une seconde en position contractée.
Image
Image

Deuxième étape
Dans la fenêtre Animator, je vire l'animation qui a été ajoutée dans le Layer par défaut pour la glisser dans un Layer à part. Le seul paramètre important étant de mettre le poids de ce layer à 1.
J'ai réglé la vitesse de l'animation à 0 et décoché l'option Loop. En pratique, cela ne change rien, mais ça fait plus propre.
Image


Troisième étape
La seule vraiment délicate, c'est de positionner proprement son Wheel Collider.
- Je crée un Empty que je place précisément au centre de la roue. Dans mon cas précis, dans la mesure où le train est rétractable, je parente cet objet avec la jambe principale du train d'atterrissage.
- Comme initialement le train est en position détendue, je règle le Target Position à zéro. Si jamais l'amortisseur était en position médiane, j'aurais mis 0.5, s'il était pleinement contracté, je l'aurais réglé à 1.
- Je règle maintenant le Wheel Collider pour que celui-ci soit au centre de la roue en ayant le même diamètre, ou légèrement inférieur pour donner un petit effet d'écrasement sur le sol, et remet le Target Position dans ma position souhaitée.
Image
Image


Quatrième et dernière étape.
Je code tout ça !
Il s'agit de récupérer la position relative du Wheel Collider entre la position d'origine et la position maximale spécifiée dans le champs Suspension Distance, et passer cette valeur dans l'animation pour lui demander d'afficher une trame précise.

Code : Tout sélectionner

Vector3 pos;
Quaternion quat;
wheelCollider.GetWorldPose (out pos, out quat);
Vector3 wheelpos = wheelCollider.gameObject.transform.position;
float distance = Vector3.Distance (wheelpos, pos);
float suspensionDistance = wheelCollider.suspensionDistance;
float frame = distance / suspensionDistance;
		
m_animator.Play ("MonAnimation", MonLayer, frame); 
Résultat :
https://www.youtube.com/watch?v=UpxuqRBxALU

Ouala ! :)
Dernière édition par LaGriffe le 18 Avr 2016 17:47, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Animer un système d'amortissement complexe sans se prendre la tête

Message par Alesk » 18 Avr 2016 17:20

Bien joué ^_^

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Animer un système d'amortissement complexe sans se prendre la tête

Message par E3DStef » 19 Avr 2016 21:08

Super le tuto, merci à toi...

Mummm me tardes de trouver du temps pour suivre ton projet plus assidument ;-)

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com


Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: Animer un système d'amortissement complexe sans se prendre la tête

Message par Max » 22 Avr 2016 18:18

Au fait, j'ai zappé, mais je t'avais fait un petit billet au niveau du portail (tu as certainement vu) concernant ton tuto ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
LaGriffe
Messages : 41
Inscription : 01 Avr 2016 13:49

Re: Animer un système d'amortissement complexe sans se prendre la tête

Message par LaGriffe » 22 Avr 2016 21:45

Je viens de voir !

Merci, m'sieur. :)

Avatar de l’utilisateur
Glloq
Messages : 26
Inscription : 30 Juin 2014 16:00
Localisation : Check your six!

Re: Animer un système d'amortissement complexe sans se prendre la tête

Message par Glloq » 23 Avr 2016 21:40

Joli!

Répondre

Revenir vers « Tutoriaux »