Este é um tutorial básico sobre como usar Corpos Rígidos e Materiais Físicos para fazer objetos caírem e quicarem em nossos projetos Unity.
Transcrição do vídeo
Olá a todos! Este é um tutorial básico sobre como usar Corpos Rígidos e Materiais Físicos para fazer objetos caírem e quicarem em nossos projetos Unity.
O Unity fornece um motor de simulação física, mas para acessar esses recursos, é necessário usar alguns componentes (como Corpo Rígido e Colisores) e outros elementos.
Isso porque a simulação física é computacionalmente cara, então, por padrão, os objetos NÃO participam dela. Cabe a nós especificar se e como um objeto deve se comportar fisicamente.
Ok, vamos começar!
Estou configurando uma cena simples no Unity com um Cubo como o chão e um modelo de basquete.

Percebemos imediatamente que o objeto Cubo, que é um objeto nativo do Unity, já possui um componente Box Collider, enquanto meu modelo 3D, que criei a partir de um arquivo externo, não possui nenhum componente Collider de qualquer tipo. Voltaremos a isso mais tarde.

Posicionei o modelo de basquete logo acima do Cubo, a uma certa distância, mas quando pressiono o botão Play, percebo imediatamente que a bola... não cai.
Para fazer a bola participar da simulação física da cena, só precisamos fornecer a ela um componente Rigid Body, que pode ser facilmente adicionado no Inspector do objeto.

Na aba do componente, notamos alguns recursos interessantes; entre eles, a massa (que podemos deixar como está para este exemplo) e a caixa de seleção "Use Gravity", que está selecionada por padrão. Desta vez, podemos iniciar o jogo e perceber que, de fato, a bola cai...

... mas passa pelo cubo subjacente, caindo no vazio!
Você pode pensar em adicionar um componente Rigid Body, possivelmente sem gravidade, ao objeto Cubo subjacente também, para fazer ambos os objetos participarem da simulação física... no entanto, podemos verificar imediatamente que essa suposição não resolve o problema (então, remova o Rigid Body do cubo, para evitar confusão).
Simplificando, a bola passa pelo cubo... ainda assim, o Cubo tem um Box Collider, então ele deveria detectar a colisão...
O fato é que é o modelo de basquete que NÃO tem seu próprio Collider, então precisamos fornecer um no Inspector. Como o basquete tem uma forma esférica, escolhemos um Sphere Collider para este objeto.

Iniciando a simulação agora, veremos a bola cair sobre o Cubo e permanecer parada nele.

Portanto, tenha em mente que até mesmo o Cubo (e, em geral, qualquer objeto da cena que irá interagir com a bola) deve ter seu próprio Collider!
Então, para recapitular: para interagir entre si, dois objetos da cena devem ambos ter Colliders, caso contrário, eles se comportarão como fantasmas; além disso, para participar da simulação física (e, assim, ser afetado pela gravidade e outras forças), um objeto também deve ter um componente Rigid Body.
No entanto, o resultado alcançado até agora não é satisfatório: a bola cai e impacta o cubo subjacente, mas não quica!
As propriedades do material do objeto, no entanto, não devem ser atribuídas ao Rigid Body, mas ao Collider: essas propriedades dizem respeito a QUALQUER objeto da cena, não apenas àqueles que participam da simulação física (ou seja, Corpos Rígidos), então precisamos configurá-las na aba do Collider.
Nesta aba, encontramos um campo chamado Material, que está definido como None por padrão, mas sugere que precisamos fornecer um objeto "Physic Material".

Então, vamos adicionar um objeto Physic Material ao Projeto; atenção: "Physic Material", não simplesmente "Material", que se refere ao aspecto visual de um objeto.
Em seguida, atribuímos este novo Physic Material ao Sphere Collider da bola de basquete, pressionamos Play e... percebemos que a bola não quica.
Isso ocorre porque, por padrão, a "Bounciness" de um novo Physic Material está definida como 0, como podemos ver selecionando esse objeto e observando suas poucas propriedades no Inspector.


O Physic Material tem duas propriedades principais: "Bounciness" e "Friction", que podem ser ajustadas para criar um comportamento de quique mais ou menos realista; por exemplo, aumentar a "Bounciness" pode aumentar a força do quique, enquanto aumentar a fricção pode diminuir a distância percorrida após cada quique.
Então, vamos tentar definir a Bounciness para 1 (valor máximo para este campo) e iniciar o jogo: desta vez, a bola quica algumas vezes antes de parar!

O comportamento é realista, mas como podemos fazer a bola quicar mais?
Podemos atuar, por exemplo, nos parâmetros de Friction e, acima de tudo, nos dois parâmetros Combine: esses parâmetros determinam como combinar os parâmetros físicos de dois objetos quando eles entram em contato.
O valor padrão para Bounce Combine é Average, então ele fará uma média entre a bola de basquete (para a qual definimos Bounciness para 1) e o cubo subjacente, que não possui um Physic Material e, portanto, será visto pelo Unity como 0, então o valor final de Bounce será, na verdade, 0.5.
Se mudarmos o Bounce Combine para Maximum, desta vez o Bounciness real em jogo será 1 e a bola quicará muito mais...
... mas agora o problema é que ela continuará quicando muito!
Na verdade, é um comportamento estranho; aparentemente, para manter os quiques constantes, o valor de Bounciness deve ser 0.965... não me pergunte por quê.


Obviamente, na simulação de quiques, a superfície também é importante: então precisamos fornecer um Physic Material ao Cubo (mas o mesmo vale para pisos, paredes e outros objetos feitos de materiais diferentes e, portanto, com propriedades físicas diferentes) e definir sua Bounciness adequadamente...
... mas deixo isso para você: experimente várias combinações, com diferentes valores para Bounciness, Friction e Combine!
Isso é tudo para este tutorial! Até breve!