Mantenha a Velocidade
Lição 3 de 19 do curso Jogo Unity: Quebra-Tijolos da Coddy.
A bola do Brick Breaker nunca perde velocidade. O PhysicsMaterial faz a maior parte do trabalho: o valor 1 de elasticidade mantém toda a velocidade do quique, e o atrito 0 impede que as paredes a arrastem. As paredes não têm material, e o Unity calcula por padrão a média dos valores dos dois colisores: o 1 da bola e o 0 de uma parede fazem com que o quique aconteça à metade da velocidade. bounceCombine = Maximum e frictionCombine = Minimum fazem com que os valores da própria bola prevaleçam.
A física ainda não é exata: uma raquete em movimento adiciona sua velocidade, e pequenos erros se acumulam ao longo de centenas de quiques. Então, em cada passo da física, a bola mantém sua direção e tem sua velocidade redefinida:
rb.linearVelocity = rb.linearVelocity.normalized * 7f;Uma bola que desacelerou para 2 unidades por segundo volta a voar a 7 no passo seguinte.
Desafio
FácilFaça a bola quicar para sempre em uma velocidade constante.
- Em
Awake()deBall, crienew PhysicsMaterial("Bouncy")com elasticidade 1, ambos os atritos em 0,bounceCombine = PhysicsMaterialCombine.MaximumefrictionCombine = PhysicsMaterialCombine.Minimum; defina-o emGetComponent<Collider>().material. - Adicione
FixedUpdate(): se tiver sido lançada,rb.linearVelocity = rb.linearVelocity.normalized * speed;
Pressione “Jogar” e lance a bola: ela quica em todas as paredes sem diminuir a velocidade. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
bool launched;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (launched) return;
transform.position = paddle.position + Vector3.up * 0.5f;
if (Keyboard.current.spaceKey.wasPressedThisFrame) Launch(new Vector3(0.3f, 1f, 0f));
}
public void Launch(Vector3 direction)
{
launched = true;
rb.linearVelocity = direction.normalized * speed;
}
}
Todas as lições de Jogo Unity: Quebra-Tijolos
Pratique por conta própria: Playground de Unity