Menu
CoddyTech

Marble Golf

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 68 z 71.

Golf z kulką na małym polu golfowym. Kulka zaczyna na tee: celujesz nią za pomocą strzałek, przytrzymujesz Spację, aby zgromadzić moc, i puszczasz, aby oddać strzał. Toczy się, odbija od band i bloku pośrodku, zwalnia, a gdy jest już wystarczająco wolna, całkowicie się zatrzymuje. Dopiero wtedy możesz oddać kolejny strzał. Kulka, która powoli wtoczy się do dołka, wpada do niego; ta, która dotrze do niego zbyt szybko, przelatuje prosto nad nim. Im mniej uderzeń, tym lepiej.

Napisz dwa skrypty: Golf dla kulki i Hole dla dołka.

challenge icon

Wyzwanie

Trudny

Napisz kod kulki golfowej: celuj, ładuj, uderzaj.

  1. Obracaj aim za pomocą surowej osi Horizontal z prędkością aimSpeed; ustaw pointer w pozycji transform.position + Quaternion.Euler(0f, aim, 0f) * Vector3.forward.
  2. Gdy kulka spoczywa (prędkość jest mniejsza niż stopSpeed), przytrzymanie klawisza spacji ładuje power z szybkością chargeRate, aż do maxPower; zwolnienie klawisza wyrzuca ją w kierunku celowania (Impulse), resetuje power i zapisuje w logu "Stroke " + strokes.
  3. W FixedUpdate(), gdy kulka spoczywa, wyzeruj obie prędkości.

Naciśnij „Graj” i wykonaj uderzenie. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Golf : MonoBehaviour
{
    public int strokes = 0;
    [SerializeField] private Transform pointer;
    [SerializeField] private float aimSpeed = 90f;
    [SerializeField] private float chargeRate = 4f;
    [SerializeField] private float maxPower = 6f;
    [SerializeField] private float stopSpeed = 0.3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // celuj strzałkami, ładuj klawiszem Space, uderz po jego zwolnieniu, zatrzymaj piłkę, gdy porusza się wolno
}

Wszystkie lekcje w sekcji Fizyka i rozgrywka

Poćwicz samodzielnie: Edytor online Unity