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.
Sfida
DifficileL’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
aimSpeedgradi 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
chargeRateal secondo, senza mai superaremaxPower; rilasciare Spazio colpisce la biglia con un impulso di quella potenza lungo la mira. La potenza torna quindi a 0 e unint strokespubblico aumenta di 1 e viene registrato comeStroke 1.
L’Inspector fornisce a Hole sinkSpeed (3).
- Quando la biglia (l’oggetto con lo script
Golf) entra in buca a una velocità inferiore asinkSpeed, registra il numero di colpi, comeIn 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
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere