Prędkość
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 5 z 63.
rb.linearVelocity określa, jak porusza się teraz ciało: to Vector3 wyrażony w metrach na sekundę wzdłuż osi x, y i z. Odczytując tę wartość, dowiadujesz się, w którą stronę 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 ustawione na 2 m/s poruszają się z dokładnie taką samą szybkością 2 m/s od następnego kroku fizyki. Grawitacja, tarcie i uderzenia nadal działają na nie później.
Ten gokart jedzie do przodu z dokładnie cruise m/s. Kopiuje prędkość, zmienia tylko z i przypisuje ją z powrotem, dzięki czemu zachowuje wartość y nadaną przez grawitację i 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ą mu przez grawitację
}Ustawienie również y na 0 powodowałoby odrzucanie prędkości nadanej przez grawitację w każdym kroku, przez co gokart zjeżdżałby z rampy zamiast spadać. Przed Unity 6 ta właściwość nazywała się velocity. W starszych samouczkach nadal można spotkać zapis rb.velocity: w Unity 6 kompiluje się on, ale wyświetla ostrzeżenie, że velocity jest przestarzałe i zostało przemianowane na linearVelocity. W ten sam sposób drag zmieniło nazwę na linearDamping. Używaj nowych nazw.
Wyzwanie
ŁatwyRobot porusza się po podwyższonej platformie. Za pomocą strzałek poruszaj nim z prędkością dokładnie speed m/s (3 w Inspectorze): w lewo i w prawo wzdłuż osi x, w górę i w dół wzdłuż osi z, używając surowych osi, aby ruch nie był łagodzony.
- Gdy nie jest wciśnięta żadna strzałka, robot natychmiast stoi w miejscu.
- Grawitacja nadal działa: gdy robot zejdzie z krawędzi, spadnie na ziemię poniżej.
Naciśnij Play i zejdź z robotem z krawędzi, a następnie naciśnij Check.
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ą klawiszy strzałek z prędkością dokładnie speed, zachowując składową y grawitacji
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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 startowa2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur