Lancio
Lezione 2 di 16 del corso Gioco Unity: Rompi-mattoni di Coddy.
La palla resta sulla racchetta finché il giocatore non la lancia. Fino ad allora, lo script la posiziona sopra la racchetta a ogni fotogramma, così si sposta insieme alla racchetta, e un bool memorizza se è stata lanciata. Il lancio imposta una volta la linearVelocity del Rigidbody. La gravità del Rigidbody della palla è disattivata, quindi da quel momento vola in linea retta a quella velocità finché non colpisce qualcosa.
Un galleggiante da pesca funziona allo stesso modo: resta appeso sotto la punta della canna fino al lancio.
bool cast;
void Update()
{
if (cast) return;
transform.position = rodTip.position + Vector3.down * 1.5f;
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
cast = true;
rb.linearVelocity = new Vector3(4f, 3f, 0f);
}
}wasPressedThisFrame è true solo nel fotogramma in cui il tasto viene premuto, quindi viene letto in Update(), che viene eseguito una volta a ogni fotogramma. Il galleggiante vola alla velocità corrispondente alla lunghezza di (4, 3, 0), cioè 5 unità al secondo. Per lanciare a una velocità esatta in qualsiasi direzione, porta la direzione a una lunghezza di 1 unità con .normalized, poi moltiplicala per la velocità.
Sfida
FacileIn Ball:
- Aggiungi un
bool launched. - Scrivi
public void Launch(Vector3 direction): impostalaunchedsu true e lalinearVelocitydel Rigidbody sulla direzione normalizzata, moltiplicata perspeed. - Aggiungi
Update(). Finché la palla non è stata lanciata, la posiziona 0.5 unità sopra la posizione del paddle e, quando si preme Spazio, chiamaLaunch(new Vector3(0.3f, 1f, 0f)).
La palla non rimbalza ancora, quindi si ferma di colpo al primo muro che colpisce: la prossima lezione risolve il problema.
Premi Play, muovi il paddle, lancia la palla, poi premi Check.
Provalo tu
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// Prossimo passo: la pallina resta sulla racchetta finché Space non la lancia.
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.