Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula

arrow_back Aula 04 - Detecção de colisão e o Motor de Física

O Motor de Física do Unity

Apesar disso, é possível aos dois motores coexistirem em uma mesma cena. Podemos ter alguns componentes respondendo ao motor de física 2D, e outros respondendo ao motor de física 3D, no entanto, eles nunca poderão interagir entre si, independentemente de qual comportamento cada componente tiver. Um componente 3D atravessará qualquer colisor 2D e vice-versa. Então, em geral, busque sempre utilizar só um dos motores! Eles foram separados por uma razão e você deve obedecer a esse comportamento.

Para o nosso caso, como trabalharemos com o desenvolvimento de jogos 2D, utilizaremos constantemente o nosso motor de física 2D. Em nossa primeira aula, vimos o motor 3D em ação quando tratamos de um exemplo rápido, mas não entramos em detalhes sobre ele e não entraremos mais. Precisamos deixar algo para o professor de Motores II poder ensinar também, não acha?

Falando do motor 2D do Unity, começaremos por uma questão muito importante: o motor de física 2D do Unity é 2D! Isso pode parecer bobagem, além de óbvio, mas não é! E eu explicarei o motivo, para vocês não acharem que estou zoando. Como vimos em aulas anteriores, o Unity, mesmo no modo 2D, ainda nos permite trabalhar com objetos em um mundo 3D. Podemos posicionar objetos em posições diferentes do eixo Z. Na verdade, para que o jogo funcione, isso precisa acontecer! A câmera, como vimos anteriormente, é, por padrão, posicionada no Z = -10. Os objetos são posicionados no Z = 0 e, com isso, ficam na frente da câmera e podem ser exibidos. Veja a Figura 1, na qual são mostrados os elementos deslocados no eixo Z.

Personagem, chão, fundo e câmera deslocados no eixo Z, mas retratados no mesmo plano no Camera Preview.

Sendo assim, nada impede que posicionemos o cenário no Z = 5, os objetos de frente no Z = 3, e o personagem no Z = 0 para ficar mais próximo à câmera. Nada impede, também, que façamos uma bobagem e coloquemos em Z um objeto não desejado, e nunca nem notemos, pois ele aparecerá do mesmo jeito, em 2D. Apesar disso tudo, como o nosso motor de física 2D é, de fato, 2D, tudo isso é ignorado na hora dos cálculos de física! O objeto que está no Z = 5 colide normalmente com o que está no Z = 3, e o personagem Z = 0 pode cair naturalmente em cima do chão Z = 4 sem passar por trás ou pela frente dele, de modo a não haver colisão. Essa facilidade é importante, apesar de usualmente passar despercebida. Há, também, todo o benefício dos custos computacionais dos cálculos feitos: uma dimensão a menos!

Outra coisa interessante nessa linha é que, por trabalhar apenas com os eixos X (vermelho, na Figura 2) e Y (verde, na Figura 2) para os cálculos físicos, o motor de física permite apenas ocorrerem rotações em torno do eixo Z, sendo este o eixo que fica perpendicular à tela do computador. Com isso, é possível rotacionar os objetos apenas de uma maneira a ser percebida pelo usuário. Veja na Figura 2 a descrição desses eixos para facilitar o entendimento. Lembre-se que a referência dos eixos é o personagem, e não o mundo. Por isso o eixo Y (verde) está na horizontal e o X (vermelho) na vertical!

Personagem rotacionado em 90° em torno do eixo Z (eixo azul). Essa rotação, em 2D, é a única que pode ser percebida.

Então, aprendemos que o Unity tem dois motores de física diferenciados, que trabalharemos com o 2D e que o motor 2D já facilita a nossa vida ao trabalhar, de fato, em 2D. Além disso, identificamos a rotação única em torno do eixo Z. Sabendo disso tudo, podemos seguir ao próximo passo: entender melhor os elementos 2D trazidos pelo motor de física do Unity. Primeiramente, trataremos dos componentes os quais podem ser adicionados aos nossos elementos e, em seguida, conheceremos os materiais físicos que podemosde utiliza para simular alguns comportamentos no Unity.

Antes disso, que tal testarmos os nossos conhecimentos um pouco mais? Vamos lá!

Versão 5.3 - Todos os Direitos reservados