Menu
CoddyTech

Distanza tra gli oggetti

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 21 di 67.

Vector3.Distance(a, b) indica quanto sono distanti due punti, in unità, misurando in linea retta lungo tutti e tre gli assi. È la lunghezza del passo tra loro, (a - b).magnitude, quindi l’ordine di a e b non è importante. Da (0, 0, 0) a (3, 0, 4) è 5.

Confronta una distanza con un numero e uno script saprà quando qualcosa è vicino. Questo campeggiatore può scaldarsi le mani solo entro 4 unità dal falò, la cui posizione viene impostata dall’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 distanza tiene conto anche dell’altezza: un campeggiatore che si trova 5 unità sopra il fuoco è a 5 unità da esso, non a 0. Quando l’altezza non deve essere considerata, confronta due punti con lo stesso valore di y.

challenge icon

Sfida

Facile

Il personaggio attraversa una palude. Entro 3 unità dal centro della palude, swamp (impostato nell'Inspector), si muove a metà della sua speed; più lontano, si muove alla velocità massima. Il codice di movimento è già scritto: calcola la velocità da usare a ogni frame e lascia invariato il campo speed.

Premi Play e attraversa la palude, poi premi Check.

Provalo tu

using UnityEngine;

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

    void Update()
    {
        float s = speed;
        // Entro 3 unità dalla palude, muoviti a metà velocità.

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

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di scripting in Unity