Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
O Unity trabalha com componentes 2D distintos, os quais podemos adicionar aos nossos elementos para que estes se comportem de maneira adequada. Dizemos que um objeto se comporta de maneira adequada quando segue corretamente as leis da física, como esperado no jogo. Isso inclui acelerar e frear do modo esperado, ser afetado por colisões e responder a elas de maneira adequada, ser afetado pela gravidade e outras forças... Enfim, são diversos comportamentos a serem seguidos e o Unity, com seus componentes, permite que possamos programar para cada um deles.
O Unity trabalha com vários componentes de tipos diferentes. Devido ao tempo e à praticidade, traremos apenas o conceito principal de cada um deles e falaremos um pouco de seus funcionamentos. Os detalhes de todos os componentes, como sempre, podem ser encontrados no manual do Unity, referenciado nas leituras complementares para mais informações. Conversaremos aqui sobre os quatro tipos principais e deixaremos as suas derivações como tema de pesquisa para vocês!
O componente Rigidbody 2D já é um conhecido nosso! Ele foi utilizado, na aula passada, para o nosso personagem poder receber uma força, baseado no Input do usuário. Isso é apenas uma das utilidades do Rigidbody 2D. Podemos dizer, de maneira geral, que esse componente serve para adicionar um objeto, o qual antes era somente gráfico, ao motor de física. Tal componente possui diversas propriedades relacionadas a como o objeto irá interagir com esse motor.
Um ponto interessante relacionado ao funcionamento do Rigidbody 2D é que, ao adicionar esse componente em um objeto, o RidigBody assume o controle do Transform (vetores de posição, rotação e escala, que já vimos, lembra?) e passa a alterar os seus valores conforme os cálculos físicos realizados pelo motor. Isso também acontece com os colisores, vistos a seguir, que estiverem ligados ao componente - o Rigidbody 2D será capaz de movê-los e gerenciá-los de acordo com o motor de física do Unity. Embora você ainda seja capaz de alterar o Transform do objeto diretamente, é importante saber que isso afeta bastante o nosso motor de física, pois essa movimentação é inesperada dentro da simulação e pode requerer a realização de novos cálculos.
Dito isso, saiba que o Rigidbody 2D é o modo mais fácil de fazer um objeto passar a responder de maneira realista às forças físicas em geral. É através dele, principalmente, que ocorre a colisão com outros objetos (em conjunto com os colisores), pois as colisões podem resultar em forças as quais movem o objeto, e isso será mais uma das atribuições do Rigidbody 2D. Para simplificar: se você quer que um objeto se mova e obedeça a forças físicas, adicione a ele um Rigidbody 2D.
Perceba, no entanto, que colisões não são feitas pelo Rigidbody 2D e, sim, pelos colisores. A atribuição do Rigidbody 2D, nesse caso, é de gerenciar as forças resultantes das colisões detectadas e fazer o elemento que o tem reagir adequadamente, alterando seu Transform para haver uma movimentação.
A primeira propriedade de um Rigidbody 2D é o Body Type. Ela possui três valores, e a escolha de um deles afeta diretamente a interação do objeto com Colliders e a maneira com a qual o objeto se move e rotaciona. Note que isso tudo influencia diretamente no comportamento do Rigidbody 2D, e alterar algo durante a execução do jogo pode ser uma péssima ideia, devido a todos os cálculos e comportamentos a serem refeitos. Pense bem sobre o que você quer que o seu objeto faça e mantenha esse Body Type ao longo de toda a execução. As três opções são:
Versão 5.3 - Todos os Direitos reservados