Menu
CoddyTech

Golf con le biglie

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 62 di 63.

Gioca a golf con una biglia su un piccolo green. La biglia parte dal tee: miri con le frecce, tieni premuto Spazio per aumentare la potenza e rilasci per tirare. Rotola, rimbalza contro le sponde e il blocco al centro e rallenta; quando è abbastanza lenta, si ferma di colpo. Solo allora puoi tirare di nuovo. Una biglia che rotola lentamente nella buca vi cade dentro; una che arriva troppo velocemente la supera rotolando. Meno colpi fai, meglio è.

Scrivi due script: Golf sulla biglia e Hole sulla buca.

challenge icon

Sfida

Difficile

L’Inspector fornisce a Golf pointer (la piccola pallina gialla), aimSpeed (90), chargeRate (4), maxPower (6) e stopSpeed (0.3). La massa della biglia è 0.5.

  • La mira è un angolo attorno all’asse y, pari a 0 all’inizio (dritto avanti, +z). La freccia destra la gira verso destra e la freccia sinistra verso sinistra, a aimSpeed gradi al secondo. A ogni frame, posiziona il puntatore a 1 unità dalla biglia nella direzione della mira.
  • La biglia è a riposo quando la sua velocità è inferiore a stopSpeed. A ogni passaggio fisico, una biglia a riposo viene fermata completamente: velocità e velocità angolare azzerate.
  • Solo quando la biglia è a riposo: tenere premuto Spazio accumula potenza a chargeRate al secondo, senza mai superare maxPower; rilasciare Spazio colpisce la biglia con un impulso di quella potenza lungo la mira. La potenza torna quindi a 0 e un int strokes pubblico aumenta di 1 e viene registrato come Stroke 1.

L’Inspector fornisce a Hole sinkSpeed (3).

  • Quando la biglia (l’oggetto con lo script Golf) entra in buca a una velocità inferiore a sinkSpeed, registra il numero di colpi, come In the cup in 2 strokes!, e disattiva la biglia. Una biglia più veloce rotola oltre la buca.

Premi Play e imbuca la biglia con il minor numero di colpi possibile, poi premi Check.

Provalo tu

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>();
    }

    // mira con le frecce, carica con Space, colpisci quando lo rilasci, fermati quando la velocità è bassa
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay