Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Robot 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
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka