Tocząca się piłka
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 27 z 63.
W tym rozdziale stworzysz małą grę Coin Rush. Toczasz piłkę po ogrodzonej arenie za pomocą strzałek i zbierasz monety, zanim skończy się czas. Dwa skrypty dzielą się zadaniami, tak jak w projekcie Unity: Ball porusza piłką i przechowuje wynik oraz czas, a Coin znajduje się na każdej monecie. Coin.cs zaczyna jako pusta klasa, a w następnej lekcji zostanie uzupełniona.
Piłka toczy się, gdy ją pchasz, zamiast przestawiać ją w inne miejsce. Pchnij jej Rigidbody za pomocą AddForce i pozostaw jej swobodę obrotu: siła porusza piłkę, a tarcie podłogi chwyta jej dolną część i wprawia ją w obrót. Ta kula do kręgli toczy się po torze, gdy przytrzymujesz spację:
public float push = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(Vector3.forward * push);
}
}Piłka, która toczy się bez poślizgu, obraca się z prędkością równą jej szybkości podzielonej przez promień, więc piłka o promieniu 0.5 poruszająca się z szybkością 3 jednostek na sekundę obraca się z prędkością 6 radianów na sekundę (rb.angularVelocity). Zamiast tego zmień jej transform.position lub zablokuj jej obrót w ustawieniu Constraints komponentu Rigidbody, a będzie się ślizgać jak krążek, nie obracając się. Zwykła, jednokolorowa kula wygląda tak samo w obu przypadkach: aby zobaczyć, jak się toczy, obserwuj Angular Velocity w sekcji Info komponentu Rigidbody podczas gry.
Wyzwanie
ŚredniRozpocznij Coin Rush z piłką. W Inspektorze nadaj Ball siłę force równą 10.
- W
Start()zapiszRigidbodypiłki wrb. - W
FixedUpdate()popychaj piłkę strzałkami:Input.GetAxis("Horizontal")wzdłuż osi x iInput.GetAxis("Vertical")wzdłuż osi z, za każdym razem z siłąforce. - Pozostaw swobodny obrót piłki, aby mogła się toczyć.
Na razie pozostaw Coin.cs bez zmian. Naciśnij Play, kliknij okno gry i tocz się po arenie, a następnie kliknij Check.
Spróbuj swoich sił
using UnityEngine;
public class Ball : MonoBehaviour
{
public float force = 10f;
private Rigidbody rb;
void Start()
{
}
void FixedUpdate()
{
// Poruszaj piłką za pomocą strzałek: Horizontal wzdłuż osi x, Vertical wzdłuż osi z.
}
}
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 mur5Projekt: Gorączka monet
Tocząca się piłkaMonety do zebrania