EloiStree / 2024_07_19_CharleroiStreetAR

Apprendre à faire Unity3D par le street AR pour commencer dans l'industrie du jeux vidéo
0 stars 0 forks source link

Workshop-Day: Utiliser les mathématiques dans Unity3D pour éviter les projectiles. #178

Open EloiStree opened 1 month ago

EloiStree commented 1 month ago

Dans Unity3D, vous disposez d'une longue série de méthodes pour éviter les arcanes des calculs mathématiques complexes. Cependant, vous serez rapidement confronté aux mystères des mathématiques lorsque nous explorerons les rotations et les directions des objets dans l'immensité de l'espace 3D.

Vous ferez alors la rencontre des quaternions, ces instruments mystérieux découverts par les sages développeurs au cœur des nombres complexes… Ces nombres imaginaires venus des abysses obscures !!!

image image

Mais rassurez-vous, nous ne nous aventurerons pas dans les ténèbres d’un savoir trop complexe (v) (^^') (v). Nous nous contenterons de scruter les trajectoires des projectiles pour déterminer si l'un d'eux se dirige vers vous, et ainsi permettre à votre drone de se déplacer avant que le destin ne s'achève sur sa destruction.

Plus sérieusement, nous examinerons plusieurs outils mathématiques pratiques, tels que Mathf, Vector3.Distance, ainsi que d'autres ressources pour simplifier votre travail.

Selon votre niveau, vous aurez également l'occasion d'explorer des concepts plus avancés. 😉

Page précédente : #177 Page suivante: #179

Step-by-step d'aujourdhui: 🚧En construction🚧

Voir:

EloiStree commented 4 weeks ago

🤖

  1. Vector3.Distance(Vector3 a, Vector3 b)
    Retourne la distance entre deux points dans l'espace 3D.

  2. Vector3.Dot(Vector3 a, Vector3 b)
    Calcule le produit scalaire entre deux vecteurs.

  3. Vector3.Cross(Vector3 a, Vector3 b)
    Calcule le produit vectoriel entre deux vecteurs.

  4. Vector3.Project(Vector3 vector, Vector3 onNormal)
    Projette un vecteur sur un autre vecteur.

  5. Vector3.Angle(Vector3 from, Vector3 to)
    Calcule l'angle en degrés entre deux vecteurs.

  6. Vector3.Lerp(Vector3 a, Vector3 b, float t)
    Interpole linéairement entre deux vecteurs.

  7. Vector3.SmoothDamp(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime)
    Interpole de manière lissée entre deux vecteurs.

  8. Vector3.Normalize(Vector3 value)
    Normalise un vecteur (le rend unitaire).

  9. Vector3.Reflect(Vector3 inDirection, Vector3 inNormal)
    Reflète un vecteur par rapport à une normale.

  10. Vector3.RotateTowards(Vector3 current, Vector3 target, float maxDegreesDelta, float maxMagnitudeDelta)
    Fait tourner un vecteur vers un vecteur cible avec une vitesse maximale en degrés.

  11. Quaternion.Angle(Quaternion a, Quaternion b)
    Calcule l'angle entre deux quaternions.

  12. Quaternion.Euler(Vector3 euler)
    Crée un quaternion à partir d'un vecteur d'angles d'Euler.

  13. Quaternion.LookRotation(Vector3 forward, Vector3 upwards)
    Crée un quaternion qui regarde dans la direction du vecteur "forward" avec l'orientation "upwards".

  14. Quaternion.Inverse(Quaternion rotation)
    Calcule l'inverse d'un quaternion.

  15. Quaternion.Lerp(Quaternion a, Quaternion b, float t)
    Interpole linéairement entre deux quaternions.

  16. Quaternion.Slerp(Quaternion a, Quaternion b, float t)
    Interpole sphériquement entre deux quaternions.

  17. Transform.TransformPoint(Vector3 position)
    Convertit une position locale en position mondiale en utilisant la transformation du Transform.

  18. Transform.InverseTransformPoint(Vector3 position)
    Convertit une position mondiale en position locale en utilisant la transformation du Transform.

  19. Bounds.Encapsulate(Vector3 point)
    Étend les limites d'un Bounds pour inclure un point.

  20. RaycastHit.point
    Obtient le point d'impact d'un rayon lors d'un tir de rayon (Raycast).


  1. Mathf.Abs(float value)
    Retourne la valeur absolue d'un nombre.

  2. Mathf.Clamp(float value, float min, float max)
    Contrainte d'une valeur entre un minimum et un maximum.

  3. Mathf.Clamp01(float value)
    Contrainte d'une valeur entre 0 et 1.

  4. Mathf.Lerp(float a, float b, float t)
    Interpolation linéaire entre deux valeurs.

  5. Mathf.LerpAngle(float a, float b, float t)
    Interpolation angulaire entre deux angles, gère les angles autour du cercle.

  6. Mathf.SmoothStep(float from, float to, float t)
    Interpolation lissée entre deux valeurs, avec une courbe de transition douce.

  7. Mathf.SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime)
    Interpolation lissée avec un temps de lissage, utile pour les mouvements.

  8. Mathf.MoveTowards(float current, float target, float maxDelta)
    Déplace une valeur vers une cible en se limitant à une différence maximale.

  9. Mathf.Pow(float x, float y)
    Élève un nombre à la puissance d'un autre nombre.

  10. Mathf.Sqrt(float value)
    Calcul de la racine carrée d'un nombre.

  11. Mathf.Exp(float power)
    Calcul de e (la base des logarithmes naturels) élevé à la puissance spécifiée.

  12. Mathf.Log(float value)
    Calcul du logarithme naturel (base e) d'une valeur.

  13. Mathf.Log10(float value)
    Calcul du logarithme en base 10 d'une valeur.

  14. Mathf.Round(float value)
    Arrondit un nombre à l'entier le plus proche.

  15. Mathf.Floor(float value)
    Arrondit un nombre à l'entier inférieur le plus proche.

  16. Mathf.Ceil(float value)
    Arrondit un nombre à l'entier supérieur le plus proche.

  17. Mathf.Sign(float value)
    Retourne le signe d'une valeur, c'est-à-dire -1 pour les nombres négatifs, 1 pour les positifs, et 0 pour zéro.

  18. Mathf.Max(float a, float b)
    Retourne la valeur maximale entre deux nombres.

  19. Mathf.Min(float a, float b)
    Retourne la valeur minimale entre deux nombres.

  20. Mathf.GammaToLinearSpace(float value)
    Convertit une valeur de l'espace gamma à l'espace linéaire (utilisé pour les couleurs).