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.
Sfida
FacileIl 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à
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere