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

Os Componentes do Motor de Física 2D

Em resumo, nós temos o tipo Dynamic, que se move com forças e reage à maior quantidade possível de outros elementos, o tipo Kinematic, que só se move quando é explicitamente dito para se mover em uma direção e não lida com colisões (exceto com objetos Dynamic), e o tipo Static, representando objetos que não devem se mover. Qual tipo utilizar dependerá diretamente do seu jogo e, mais especificamente, de qual objeto esse Rigidbody 2D estará ligado.

Você pode estar se perguntando o motivo de um componente responsável por fazer objetos responderem ao motor de física, ter uma configuração que o faz ficar estático. A resposta é simples. Alguns outros componentes de física dependem de um Rigidbody 2D estar ligado ao objeto para que possam funcionar. É através dele que esses componentes ganham acesso ao objeto e, então, é necessário adicionar um Rigidbody 2D de qualquer maneira. Se for num objeto que não deveria se mover, o adicionamos estático! Entende?

E as outras propriedades? Bom, vejamos a Figura 3 com a lista de todas as propriedades presentes no Rigidbody 2D do nosso amigo robô, para podermos discutir cada uma delas rapidamente. Lembre-se que, ao alterar o Body Type, todas as propriedades disponíveis são também alteradas. Veremos aqui especificamente as propriedades da opção Dynamic, que é a mais comum e possui mais propriedades. Para mais detalhes sobre as outras opções, consulte o manual.

Rigidbody 2D do nosso player, com o script que o controla.

A primeira propriedade, Body Type, já discutimos e vimos que escolhemos a opção correta para ela desde o começo, pois essa é a opção mais utilizada e selecionada por padrão pelo Unity. Seguindo adiante na lista, a segunda propriedade é a Material.

É possível criar materiais físicos, de modo a alterar as propriedades físicas de objetos. A propriedade Material, dos Rigidbody 2D, serve justamente para atrelar a um elemento físico um desses materiais. Veremos adiante que os Colliders em geral também possuem essa propriedade. Quem tem o material, na verdade, são os Colliders. Os Rigidbodys 2D apenas o tem para caso o Collider não especifique nenhum. Se o Collider não tiver o seu próprio, será utilizado o do Rigidbody 2D. Se nenhum dos dois tiver, não haverá material algum para aquele objeto.

Usa-se a propriedade Simulated a fim de ativar e desativar a simulação física para o objeto atual. É como se tivéssemos desabilitando o Rigidbody 2D daquele objeto. Mas atenção! Não é a mesma coisa de desabilitar. Quando estamos lidando com um Rigidbody 2D, ele é um elemento a mais que é criado dentro do motor de física e simulado. Se nós desabilitarmos esse Rigidbody 2D, ele será removido do motor. Caso o recriemos, será novamente adicionado. Isso consumirá tempo e memória. Quando simplesmente desabilitamos a opção Simulated, o objeto continua lá, mas passa a ser ignorado, facilitando toda a computação e devendo ser sempre a decisão tomada, quando necessário.

A Use Auto Mass é uma propriedade trazida pelo Unity para que a massa do objeto seja calculada automaticamente. Se marcarmos essa opção, o Unity procurará por Colliders atrelados ao objeto e, baseado na área desses Colliders e na densidade que eles possuem, calculará a massa aproximada dele. Isso tira um pouco da capacidade de personalizar o objeto que você tem, mas pode ser uma boa opção para se utilizar com efeitos como o de empuxo, por exemplo.

A propriedade Mass permite a você indicar a massa do Rigidbody 2D. Perceba que essa opção é desabilitada caso o cálculo automático de massa seja habilitado na propriedade anterior.

A propriedade Linear Drag indica qual o atrito que afetará a movimentação de posição do objeto, enquanto a propriedade Angular Drag, por sua vez, indica o atrito para rotação do objeto.

A propriedade Gravity Scale indica como a gravidade afetará esse objeto. A gravidade em si é definida nas configurações de física do motor, as quais podem ser acessadas pelo menu Edit -> Project Settings -> Physics 2D, juntamente com diversas outras propriedades do motor de física que podem ser alteradas. Vale a pena conferir por lá!

Atenção!

É interessante notar que a Gravity Scale pode receber um valor negativo também, fazendo com que o objeto seja afetado pela gravidade ao contrário. Isso já é uma opção para se pensar em colocar no seu jogo!

Versão 5.3 - Todos os Direitos reservados