Velocidade
Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 5 de 63.
rb.linearVelocity é como o corpo está se movendo agora: um Vector3 em metros por segundo ao longo de x, y e z. Lê-lo informa para onde o corpo está indo, e rb.linearVelocity.magnitude é sua velocidade escalar. Defini-lo altera o movimento imediatamente, sem aceleração gradual e sem envolver a massa: uma caixa de 1 kg e um cofre de 50 kg definidos para 2 m/s movem-se ambos exatamente a 2 m/s a partir da próxima etapa da física. A gravidade, o atrito e os impactos continuam agindo sobre ele depois disso.
Este kart dirige para a frente exatamente a cruise m/s. Ele copia a velocidade, altera apenas z e a atribui de volta, então o valor de y que a gravidade lhe deu permanece, e o kart continua caindo ao sair do fim de uma rampa:
void FixedUpdate()
{
Vector3 vel = rb.linearVelocity;
vel.z = cruise; // para a frente a exatamente cruise m/s
rb.linearVelocity = vel; // y mantém o valor resultante da gravidade
}Definir y como 0 também descartaria a velocidade adquirida pela gravidade em cada etapa, e o kart desceria lentamente ao sair da rampa em vez de cair. Antes do Unity 6, essa propriedade era chamada de velocity. Tutoriais antigos ainda escrevem rb.velocity: no Unity 6, isso compila, com um aviso de que velocity está obsoleta e foi renomeada para linearVelocity. drag passou a se chamar linearDamping da mesma forma. Use os novos nomes.
Desafio
FácilO robô anda sobre uma plataforma elevada. Faça as setas moverem o robô exatamente a speed m/s (3 no Inspector): esquerda e direita ao longo de x, para cima e para baixo ao longo de z, usando os eixos brutos para que não haja suavização.
- Sem nenhuma seta pressionada, ele para imediatamente.
- A gravidade continua funcionando: ao sair da borda, o robô cai no chão abaixo.
Pressione Play e faça o robô sair da borda; em seguida, pressione Check.
Experimente você mesmo
using UnityEngine;
public class RobotWalk : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Mova-se exatamente à velocidade speed usando as setas, mantendo o y da gravidade
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Física e jogabilidade
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para Coletar