Menu
CoddyTech

Distance entre des objets

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 28 sur 85.

Vector3.Distance(a, b) indique à quelle distance se trouvent deux points, en unités, mesurée en ligne droite selon les trois axes. C'est la longueur du déplacement entre eux, (a - b).magnitude, donc l'ordre de a et b n'a pas d'importance. De (0, 0, 0) à (3, 0, 4), la distance est de 5.

En comparant une distance à un nombre, un script sait quand quelque chose est proche. Ce campeur ne peut se réchauffer les mains qu'à moins de 4 unités du feu de camp, dont la position est définie dans l'Inspector :

public Vector3 campfire = new Vector3(3, 0, 4);

void Update()
{
    float d = Vector3.Distance(transform.position, campfire);
    if (d < 4f && Input.GetKeyDown(KeyCode.Space))
    {
        Debug.Log("You warm your hands");
    }
}

La distance tient aussi compte de la hauteur : un campeur situé 5 unités au-dessus du feu se trouve à 5 unités de celui-ci, et non à 0. Lorsque la hauteur ne doit pas être prise en compte, compare deux points ayant la même coordonnée y.

challenge icon

Défi

Facile

Réduis la vitesse du marcheur de moitié dans le marais.

  1. Sous float s = speed;, écris if (Vector3.Distance(transform.position, swamp) < 3f).
  2. À l’intérieur, définis s = speed / 2;. Laisse le champ speed et les lignes de déplacement tels quels.

Appuie sur « Jouer » et traverse le marais en marchant tout droit : le marcheur ralentit dans le marais. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;
    public Vector3 swamp = new Vector3(0, 0.5f, 0);

    void Update()
    {
        float s = speed;
        // À moins de 3 unités du marais, déplacez-vous à la moitié de la vitesse.

        Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        transform.position += direction.normalized * s * Time.deltaTime;
    }
}

Toutes les leçons de Les bases du scripting dans Unity

Entraînez-vous par vous-même : Playground Unity