Tocząca się piłka
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 28 z 71.
W tym rozdziale powstaje mała gra Coin Rush. Toczysz 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 będzie przechowywać wynik oraz czas, a Coin znajduje się na każdej monecie. Coin.cs zaczyna jako pusta klasa, a w następnej lekcji ją uzupełnisz.
Piłka toczy się, gdy ją popychasz, zamiast ustawiać ją w wybranym miejscu. Popychaj jej komponent Rigidbody za pomocą AddForce i pozostaw jej swobodę obrotu: siła porusza piłkę, a tarcie podłogi chwyta jej spód 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 tocząca się bez poślizgu obraca się z prędkością równą jej prędkości podzielonej przez promień, więc piłka o promieniu 0.5 poruszająca się z prędkością 3 jednostek na sekundę obraca się z prędkością 6 radianów na sekundę (rb.angularVelocity). Zamiast tego zmień jej transform.position albo zablokuj obrót w sekcji Constraints komponentu Rigidbody, a będzie ślizgać się jak krążek, nie obracając się. Zwykła, jednokolorowa kula wygląda tak samo w obu przypadkach: aby zobaczyć obrót, obserwuj Angular Velocity w sekcji Info komponentu Rigidbody podczas gry.
Wyzwanie
ŚredniRozpocznij Coin Rush: poruszaj piłką za pomocą strzałek.
- W
Start()w plikuBall.csustawrb = GetComponent<Rigidbody>();. - W
FixedUpdate()odczytajfloat x = Input.GetAxis("Horizontal");orazfloat z = Input.GetAxis("Vertical");, a następnie wywołajrb.AddForce(new Vector3(x, 0f, z) * force);.
Naciśnij „Graj”, kliknij okno gry i poruszaj piłką: piłka obraca się podczas ruchu. Następnie naciśnij „Sprawdź”.
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.
}
}
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