Vincere o perdere
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 32 di 63.
Sfida
MedioUltimo passaggio: un modo per vincere. Mantieni tutto ciò che hai fatto nei passaggi precedenti e aggiungi a Ball:
public int target = 10;(nell’Inspector imposta 8).- La partita è in corso mentre
timeLeftè maggiore di 0 escoreè minore ditarget. Scrivilo come metodo,bool IsPlaying(), e usalo: il tempo scorre, le frecce spingono e le monete aumentano il punteggio solo mentre la partita è in corso. - Quando una moneta porta
scoreatargeto oltre, registraYou win!dopo la riga del punteggio. - Quando il tempo scade per primo, registra
You lose!dopo la rigaTime's up!.
Premi Play e raggiungi 8 punti prima che scada il tempo, poi premi Check.
Provalo tu
using UnityEngine;
public class Ball : MonoBehaviour
{
public float force = 10f;
public int score;
public float timeLimit = 60f;
public float timeLeft;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
timeLeft = timeLimit;
}
void Update()
{
if (timeLeft > 0f)
{
timeLeft -= Time.deltaTime;
if (timeLeft <= 0f)
{
timeLeft = 0f;
Debug.Log("Time's up! Score: " + score);
}
}
}
void FixedUpdate()
{
if (timeLeft > 0f)
{
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
rb.AddForce(new Vector3(x, 0f, z) * force);
}
}
public void AddScore(int points)
{
score += points;
Debug.Log("Score: " + score);
}
}
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