Car Tutorial #0 – Conceitos

car tutorial 0

Olá pessoal!

Atendendo à alguns pedidos, darei início a uma série de tutoriais sobre a construção de um simples sistema de carros em Unity 3D.

Nessa série, cobrirei o básico para se produzir um carro com algum realismo usando WheelColliders, que nos provê a implementação dos conceitos físicos existentes em um carro, como torque, steer e brake.

Também é preciso que você já possua domínio sobre os conceitos básicos de Colliders, Rigidbodies, programação e utilização da Unity 3D em si.

A ideia final é simular um veículo simples que possa:

  1. Acelerar ou dar ré mediante ativação das setas para cima/baixo do teclado;
  2. Girar para esquerda/direita mediante ativação das setas para esquerda/direita do teclado;
  3. Girar as rodas frontais quando acionado o giro esquerda/direita;
  4. Desacelerar até parar pelo atrito com solo, se nenhuma aceleração for aplicada;
  5. Desacelerar por resistência do ar;
  6. Desacelerar por frenagem via tecla espaço.
  7. Alterar o centro de massa do rigidbody para proporcionar mais estabilidade ao veículo;
  8. Utilizar o script SmoothFollow da Unity 3D para que siga o veículo.

Mas antes disso, vamos estudar um pouco sobre os conceitos abordados nessa série, e para isso, a Unity 3D possui uma extensa documentação para nos ajudar. Então apertem os cintos!

WHEELCOLLIDER

Aqui nós encontraremos uma explicação sobre o que são, para que servem e como funcionam os WheelColliders.

The Wheel Collider is a special collider for grounded vehicles. It has built-in collision detection, wheel physics, and a slip-based tire friction model.

Bom, sabemos então que um wheelCollider é um tipo de collider especial, projetado especificamente para veículos terrestres que necessitam de atrito entre roda e alguma superfície sólida para se locomover. Ele simula em si os conceitos de torque, atrito, frenagem e sentido de orientação de uma roda (i.e., curvatura esquerda/direita) e rotação (rpm), o básico que precisamos para fazer um simples carro.

Imagem

Observe o círculo verde: ele é o wheelCollider!   😀

Esses são alguns parâmetros que ele possui, que podem ser configurados para se obter os mais diversos comportamentos de rodas, que por sua vez, simularão os mais diversos veículos.

Imagem

Não nos preocuparemos com todos agora, mas segue um breve resumo dos itens que usaremos no momento:

  • Mass: massa da roda;
  • Radius: tamanho do raio da roda;
  • Suspension distance: é a altura da suspensão do carro, sempre no eixo Y (cima/baixo);
  • Center: centro do wheelCollider (não confundir com centro do gameobject que possui o wheelCollider).

RIGIDBODY

Ok. O wheelCollider tem o que precisamos… Mas precisamos de algo além. Precisamos também de um rigidbody em nosso carro, para que ele possa simular a física necessária para que o wheelCollider funcione (leia mais sobre rigidbody aqui).

Ao contrário de outros colliders, se adicionarmos um wheelCollider em um objeto que não possui um rigidbody e tentarmos executar o jogo, a mensagem será exibida no console:

Imagem

Isso acontece porque o rigidbody é o que faz com que a Unity 3D aplique sobre o gameobject as etapas de simulação física.

FORÇAS E MOVIMENTAÇÃO

Uma forma de locomovermos nossos objetos sem precisar de wheelColliders seria apenas transladarmos uma determinada quantidade de espaço por tempo. Porém, isso não é nada realista para carros, e perderíamos toda a vantagens do wheelCollider.

Portanto, para o carro se mover, nós aplicaremos forças sobre o rigidbody, como na figura a seguir:

Imagem

  • Gravidade: automaticamente aplicada à partir do momento em que adicionados o rigidbody pela Unity (embora possamos desativá-la desmarcando “use gravity” no componente rigidbody).
  • Tração: tração é a força que impulsionará nosso rigidbody. Ela será internamente calculada pela Unity à partir do momento em que aplicarmos torque nos wheelColliders.
  • Resistência: as forças de resistência podem ser várias, como resistência do ar, frenagem e atrito com o solo.

O sistema físico da Unity 3D se encarregará de calcular a força resultante da soma de todas elas. Essa força resultante posicionará nosso veículo em um determinado ponto do espaço, num determinado tempo.

Tração + Gravidade + Resistência = Resultante

Eu também presumo que você conheça o que é uma força em física. Mas aqui está uma breve explicação:

Força é uma grandeza que tem a capacidade de vencer a inércia de um corpo, modificando-lhe a velocidade (seja na sua magnitude ou direção, já que se trata de um vetor). A força, por ser também um vetor, tem dois elementos: a magnitude e a direção.

Fonte: wikipedia

A magnitude de uma força é medida em Newtons, no Sistema Internacional (S.I.). 1 Newton é a quantidade de força necessária para acelerar uma massa de 1kg a 1 m/s².

Segunda Lei de Newton:

Força = massa * aceleração

Por essa fórmula, podemos perceber que a mesma aceleração produzirá uma força diferente de acordo com a massa do corpo, o que resultará numa força resultante diferente.

TORQUE

Uma das propriedades do wheelCollider é o motorTorque, que é a força de rotação que o trabalho do motor produz sobre o eixo das rodas.

Imagem

A figura acima exemplifica o conceito de torque. Suponha que a barra cinza seja uma chave de roda, e o ponto de rotação seja um parafuso do pneu que precisamos trocar. Quanto mais próximo da extremidade da chave segurarmos, menor força faremos, pois:

Torque = Força * Distância

Torque é medido no S.I em Newton-metro. Não precisamos nos preocupar com detalhes dessa implementação em Unity 3D, e nem pretendo explicar o funcionamento dessa mecânica em um carro real, mas para nossos fins basta sabermos do que se trata o torque (fiquem à vontade para pesquisar sobre a mecânica de veículos para entender mais profundamente tais conceitos).

Isso encerra nossa introdução. A seguir começaremos a configurar cena na Unity, utilizando um modelo 3D de carro.
Até breve!

Um comentário sobre “Car Tutorial #0 – Conceitos

Resposta