Menu
CoddyTech

Lancio

Lezione 2 di 19 del corso Gioco in Unity: Rompi i mattoni di Coddy.

La palla aspetta sulla racchetta finché il giocatore non la lancia. Fino a quel momento, Update() la posiziona sopra la racchetta a ogni fotogramma, così va ovunque vada la racchetta, e un bool tiene traccia del fatto che abbia preso il volo:

void Update()
{
    if (launched) return;
    transform.position = paddle.position + Vector3.up * 0.5f;
}

Il Rigidbody della palla non è soggetto alla gravità, quindi una velocità impostata una sola volta la mantiene in volo in linea retta. wasPressedThisFrame è true solo nel fotogramma in cui si preme un tasto, quindi leggilo in Update(). Per farla volare a una velocità esatta in qualsiasi direzione, rendi la direzione lunga 1 unità con .normalized, poi moltiplicala: new Vector3(3f, 4f, 0f).normalized * 10f la fa volare a 10 unità al secondo.

challenge icon

Sfida

Facile

La palla resta sulla racchetta finché la barra spaziatrice non la lancia.

  1. In Ball, aggiungi bool launched; e public void Launch(Vector3 direction): launched = true; e rb.linearVelocity = direction.normalized * speed;
  2. In Update(), esci se la palla è stata lanciata; altrimenti posizionala in paddle.position + Vector3.up * 0.5f.
  3. Quando la barra spaziatrice wasPressedThisFrame, chiama Launch(new Vector3(0.3f, 1f, 0f)).

Premi «Gioca», muovi la racchetta, poi premi la barra spaziatrice: la palla vola verso l’alto e si ferma alla prima parete (il rimbalzo arriverà dopo). Poi premi «Verifica».

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.
}

Tutte le lezioni di Gioco in Unity: Rompi i mattoni

Esercitati da solo: Playground Unity