Menu
CoddyTech

Lançamento

Lição 2 de 19 do curso Jogo Unity: Quebra-Tijolos da Coddy.

A bola fica esperando na raquete até que o jogador a lance. Até lá, Update() a posiciona no topo da raquete a cada quadro, então ela vai para onde quer que a raquete vá, e um bool registra se ela já voou:

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

O Rigidbody da bola não tem gravidade, então uma velocidade definida uma única vez a mantém voando em linha reta. wasPressedThisFrame só é true no quadro em que uma tecla é pressionada, então leia-o em Update(). Para voar a uma velocidade exata em qualquer direção, faça a direção ter 1 unidade de comprimento com .normalized e, em seguida, multiplique: new Vector3(3f, 4f, 0f).normalized * 10f voa a 10 unidades por segundo.

challenge icon

Desafio

Fácil

A bola fica sobre a raquete até que a tecla Espaço a lance.

  1. Em Ball, adicione bool launched; e public void Launch(Vector3 direction): launched = true; e rb.linearVelocity = direction.normalized * speed;
  2. Em Update(), retorne se a bola tiver sido lançada; caso contrário, coloque a bola em paddle.position + Vector3.up * 0.5f.
  3. Quando wasPressedThisFrame for verdadeiro para a tecla Espaço, chame Launch(new Vector3(0.3f, 1f, 0f)).

Pressione “Jogar”, mova a raquete e, em seguida, pressione Espaço: a bola voa para cima e para na primeira parede (o quique vem a seguir). Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;
using UnityEngine.InputSystem;

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

    Rigidbody rb;

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

    // Próximo passo: a bola fica sobre a raquete até que Space a lance.
}

Todas as lições de Jogo Unity: Quebra-Tijolos

Pratique por conta própria: Playground de Unity