Menu
CoddyTech

Velocità

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 5 di 63.

rb.linearVelocity indica come si sta muovendo il corpo in questo momento: un Vector3 in metri al secondo lungo x, y e z. Leggendolo scopri in che direzione si sta muovendo il corpo, mentre rb.linearVelocity.magnitude ne indica la velocità. Impostarlo cambia subito il movimento, senza accelerazione graduale e senza coinvolgere la massa: una scatola da 1 kg e una cassaforte da 50 kg impostate a 2 m/s si muovono entrambe esattamente a 2 m/s dal passo fisico successivo. In seguito continuano ad agire la gravità, l'attrito e gli urti.

Questo go-kart procede in avanti esattamente a cruise m/s. Copia la velocità, modifica solo z e la riassegna, così il valore di y assegnato dalla gravità rimane invariato e il kart continua a cadere quando raggiunge la fine di una rampa:

void FixedUpdate()
{
    Vector3 vel = rb.linearVelocity;
    vel.z = cruise;            // in avanti esattamente a cruise m/s
    rb.linearVelocity = vel;   // y mantiene il valore dovuto alla gravità
}

Impostare anche y a 0 eliminerebbe la velocità dovuta alla gravità a ogni passo e il kart scivolerebbe giù dalla rampa invece di cadere. Prima di Unity 6 questa proprietà si chiamava velocity. I vecchi tutorial usano ancora rb.velocity: in Unity 6 il codice viene compilato, con un avviso che indica che velocity è obsoleto ed è stato rinominato linearVelocity. Allo stesso modo, drag è diventato linearDamping. Usa i nuovi nomi.

challenge icon

Sfida

Facile

Il robot cammina su una piattaforma rialzata. Fai in modo che cammini con le frecce esattamente a speed m/s (3 nell’Inspector): a sinistra e a destra lungo x, in alto e in basso lungo z, usando gli assi grezzi in modo che non ci sia alcuna accelerazione graduale.

  • Se non è premuta alcuna freccia, si ferma immediatamente.
  • La gravità continua ad agire: se esce dal bordo camminando, il robot cade a terra.

Premi Play e fallo camminare fuori dal bordo, quindi Check.

Provalo tu

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Cammina esattamente alla velocità speed usando le frecce, mantenendo la componente y della gravità
    }
}
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 Fisica e gameplay