Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

O 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
    }
}
quiz iconTeste seus conhecimentos

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