[DB] les forces induites après collision

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB] les forces induites après collision

Message par Max » 06 Jan 2019 14:59

Yugo a écrit :
06 Jan 2019 12:49
il me faudrait une formule pour une variable forceImpact...
Tu cherches bien compliqué pour un début je trouve ;)
Ceci dit, regarde du coté des Physic Material, cela te fournira un début de piste.
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
Yugo
Messages : 24
Inscription : 12 Nov 2018 15:22

Re: [DB] les forces induites après collision

Message par Yugo » 07 Jan 2019 15:15

La difficulté ne me fait pas peur et puis... il y a une communauté toujours près à aider...c'est cool!

J'ai trouvé une formule dérivée de celle le énergie cinétique que je mets au cas où ça intersecterait quelqu'un.

forceInpact = 0.5f * rb.mass * Mathf.Pow(rb.velocity.magnitude, 2); //(rb = RigidBody du vaisseau)

Selon la valeur de forceImpact je décide que rien ne se passe ou je déclenche une perte de contrôle ou je détruis le vaisseaux.

Avatar de l’utilisateur
Yugo
Messages : 24
Inscription : 12 Nov 2018 15:22

Re: [DB] les forces induites après collision

Message par Yugo » 07 Jan 2019 19:42

voici le script pour réduire les Forces après collision.
Les forces de mouvement sont dans un Vector3 : RB.velocity
Les forces de rotation sont dans un Vector3 : RB.angularVelocity
Lors d'une collision on mets le bool contrainteOn = true

Code : Tout sélectionner

    public Vector3 contrainteVelocity;
    public Vector3 contrainteAngle;
    
if (contrainteOn)
    {
      contrainteVelocity = Vector3.Lerp(contrainteVelocity,Vector3.zero , 0.005f);
      contrainteAngle = Vector3.Lerp(contrainteAngle, Vector3.zero, 0.005f);
      RB.velocity = contrainteVelocity;          
      RB.angularVelocity = contrainteAngle;
      if (RB.velocity == Vector3.zero && RB.angularVelocity == Vector3.zero) { vaissInfo.contrainteOn = false; }
     }

Répondre

Revenir vers « Scripting »