Menu
CoddyTech

Distance entre les objets

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

Vector3.Distance(a, b) indique à quelle distance se trouvent deux points, en unités, mesurée en ligne droite sur les trois axes. C’est la longueur du déplacement entre eux, (a - b).magnitude : l’ordre de a et b n’a donc 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 compter, compare deux points ayant la même coordonnée y.

challenge icon

Défi

Facile

Le personnage traverse un marécage. À moins de 3 unités du centre du marécage, swamp (défini dans l’inspecteur), il se déplace à la moitié de sa speed ; plus loin, il se déplace à vitesse normale. Le code de déplacement est écrit : détermine la vitesse à utiliser à chaque image et laisse le champ speed lui-même inchangé.

Appuie sur Play et traverse le marécage, puis appuie sur Check.

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, se déplacer à la moitié de la vitesse.

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

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

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