Menu
CoddyTech

Lanzamiento

Lección 2 de 19 del curso Juego en Unity: Rompe ladrillos de Coddy.

La pelota espera sobre la paleta hasta que el jugador la lance. Hasta entonces, Update() la coloca sobre la paleta en cada fotograma, así que va dondequiera que vaya la paleta, y un bool recuerda si ya ha salido volando:

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

El Rigidbody de la pelota no tiene gravedad, así que una velocidad establecida una sola vez hace que siga volando en línea recta. wasPressedThisFrame es true solo en el fotograma en que se presiona una tecla, así que léelo en Update(). Para volar a una velocidad exacta en cualquier dirección, haz que la dirección mida 1 unidad con .normalized y luego multiplícala: new Vector3(3f, 4f, 0f).normalized * 10f vuela a 10 unidades por segundo.

challenge icon

Desafío

Fácil

La pelota permanece sobre la paleta hasta que la barra espaciadora la lanza.

  1. En Ball, añade bool launched; y public void Launch(Vector3 direction): launched = true; y rb.linearVelocity = direction.normalized * speed;
  2. En Update(), retorna si se ha lanzado; si no, coloca la pelota en paddle.position + Vector3.up * 0.5f.
  3. Cuando se presione la barra espaciadora wasPressedThisFrame, llama a Launch(new Vector3(0.3f, 1f, 0f)).

Pulsa «Jugar», mueve la paleta y después pulsa la barra espaciadora: la pelota sale disparada hacia arriba y se detiene en la primera pared (el rebote viene después). Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;
using UnityEngine.InputSystem;

public class Ball : MonoBehaviour
{
    public Transform paddle;
    public float speed = 9f;

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    // A continuación: la pelota permanece sobre la pala hasta que Space la lanza.
}

Todas las lecciones de Juego en Unity: Rompe ladrillos

Practica por tu cuenta: Playground de Unity