Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Rozpocznij Coin Rush z piłką. W Inspektorze nadaj Ball siłę force równą 10.

  • W Start() zapisz Rigidbody piłki w rb.
  • W FixedUpdate() popychaj piłkę strzałkami: Input.GetAxis("Horizontal") wzdłuż osi x i Input.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.
    }
}
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