Prędkość
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 5 z 71.
rb.linearVelocity określa, jak ciało porusza się w danej chwili: to Vector3 wyrażony w metrach na sekundę wzdłuż osi x, y i z. Odczyt tej wartości informuje, dokąd zmierza ciało, a rb.linearVelocity.magnitude to jego szybkość. Ustawienie tej wartości natychmiast zmienia ruch, bez rozpędzania i bez uwzględniania masy: skrzynia o masie 1 kg i sejf o masie 50 kg, którym ustawiono prędkość 2 m/s, od następnego kroku fizyki poruszają się z dokładnie taką samą prędkością 2 m/s. Grawitacja, tarcie i uderzenia nadal działają na nie później.
Ten gokart jedzie do przodu z dokładnie cruise m/s. Kopiuje wektor prędkości, zmienia tylko z i przypisuje go z powrotem, dzięki czemu zachowuje wartość y nadaną przez grawitację, a gokart nadal spada z końca rampy:
void FixedUpdate()
{
Vector3 vel = rb.linearVelocity;
vel.z = cruise; // do przodu z prędkością dokładnie cruise m/s
rb.linearVelocity = vel; // y zachowuje wartość nadaną przez grawitację
}Ustawienie y na 0 również odrzuciłoby prędkość nadaną przez grawitację przy każdym kroku, a gokart zsuwałby się z rampy zamiast spadać. Przed Unity 6 ta właściwość nazywała się velocity. W starych samouczkach nadal można znaleźć zapis rb.velocity: w Unity 6 kod się kompiluje, ale pojawia się ostrzeżenie, że velocity jest przestarzałe i zostało przemianowane na linearVelocity. Podobnie drag zmieniło nazwę na linearDamping. Używaj nowych nazw.
Wyzwanie
ŁatwyPoruszaj robotem z prędkością dokładnie speed m/s i pozwól mu spaść z krawędzi.
- W
FixedUpdate()odczytajfloat h = Input.GetAxisRaw("Horizontal");orazfloat vz"Vertical". - Ustaw
rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed);, zachowując składową y grawitacji.
Naciśnij „Graj” i zejdź z krawędzi: robot zatrzyma się, gdy puścisz przycisk, i spadnie. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class RobotWalk : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Poruszaj się za pomocą strzałek z prędkością równą dokładnie speed, zachowując składową y wynikającą z grawitacji
}
}
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa4Korutyny
WywoływanieInvokeRepeating i CancelInvokeTwoja pierwsza korutynaPętle w korutynachZatrzymywanie korutynPodsumowanie: odliczanie10Projekt: Ucieczka z areny
ArenaŁowcy2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur5Projekt: Wyścig po monety
Tocząca się piłkaZbieranie monet3Wyzwalacze
Kolizje wyzwalająceOnTriggerEnterPrzedmioty do zebraniaSkrzynie zatrzymują resztęStrefy śmierciWejście i wyjściePodsumowanie: klucz i drzwiPoćwicz samodzielnie: Edytor online Unity