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.
Desafio
FácilA bola fica sobre a raquete até que a tecla Espaço a lance.
- Em
Ball, adicionebool launched;epublic void Launch(Vector3 direction):launched = true;erb.linearVelocity = direction.normalized * speed; - Em
Update(), retorne se a bola tiver sido lançada; caso contrário, coloque a bola empaddle.position + Vector3.up * 0.5f. - Quando
wasPressedThisFramefor verdadeiro para a tecla Espaço, chameLaunch(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