Lançamento
Lição 2 de 16 do curso Jogo no Unity: Quebra-Tijolos da Coddy.
A bola fica sobre a raquete até que o jogador a lance. Até lá, o script a posiciona no topo da raquete a cada quadro, então ela vai para onde quer que a raquete vá, e um bool guarda se ela já foi lançada. O lançamento define o linearVelocity do Rigidbody uma vez. A gravidade do Rigidbody da bola está desativada, então, a partir daí, ela voa em linha reta com essa velocidade até atingir algo.
Uma boia de pesca funciona da mesma forma: ela fica pendurada na ponta da vara até o arremesso.
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 apenas no quadro em que a tecla é pressionada, então ele é lido em Update(), que é executado uma vez a cada quadro. A boia voa com a magnitude de (4, 3, 0), a 5 unidades por segundo. Para lançar a uma velocidade exata em qualquer direção, faça a direção ter 1 unidade de comprimento com .normalized e, em seguida, multiplique-a pela velocidade.
Desafio
FácilEm Ball:
- Adicione um
bool launched. - Escreva
public void Launch(Vector3 direction): ele definelaunchedcomo true e olinearVelocitydo Rigidbody como a direção normalizada para ter 1 unidade de comprimento, multiplicada porspeed. - Adicione
Update(). Enquanto a bola não tiver sido lançada, posicione-a 0.5 unidades acima da posição do paddle e, quando a tecla Espaço for pressionada, chameLaunch(new Vector3(0.3f, 1f, 0f)).
A bola ainda não quica, então ela para completamente na primeira parede que atingir: a próxima lição corrige isso.
Pressione Play, mova o paddle, lance a bola e, em seguida, Check.
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.
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.