Personagem de jogo 3D caindo através do chão por falta de Collider na Unity.

Por que meu personagem atravessa o chão na Unity? (Resolvido)

Pare de Cair no Infinito: Entendendo a Física Básica da Unity

Você configurou o cenário. Colocou um cubo para ser o chão, uma cápsula para ser o Player. Tudo lindo na Scene.

Você aperta o Play cheio de expectativa.

E aí… seu personagem atravessa o chão e cai no infinito, enquanto o eixo Y no Inspector vira um contador negativo maluco.

Se você já reclamou da engine ou achou que quebrou o código, relaxa. Isso é comum com todo desenvolvedor Unity. O problema não é bug, é que você (ainda) não explicou para a Unity o que é sólido e o que obedece à gravidade.

Vamos arrumar isso em 3 minutos.

1. O Conceito de “Fantasma” (Mesh vs. Physics)

Primeira coisa que você precisa entender: Ver não é Tocar.

Para a Unity, o modelo 3D (aquilo que você vê) é apenas uma casca visual. Ele não existe fisicamente. Se você não adicionar um componente de física, aquele cubo lindo que parece concreto é, para a engine, feito de ar.

Para o objeto existir no mundo físico, ele precisa de uma “borda sólida”. Chamamos isso de Collider.

2. O Collider: A “Casca” Sólida

O componente Collider (Colisor) define o formato físico do objeto.

  • O Chão precisa de um Box Collider.
  • O Player precisa de um Capsule Collider.

Como verificar:

  1. Clique no seu objeto “Chão”.
  2. Olhe no Inspector. Tem um componente chamado Box Collider?
  3. Se não tiver, clique em Add Component > Digite Box Collider > Enter.

Faça o mesmo no seu Player (geralmente usando um Capsule Collider ou Box Collider).

“Maicon, coloquei os Colliders e ele AINDA não cai! Ele fica flutuando!”

Exato. Agora eles são sólidos, mas não têm peso. É aqui que entra o segundo componente.

3. O Rigidbody: Quem toma conta da Gravidade

O Collider diz “eu sou sólido”. O Rigidbody diz “eu tenho peso e obedeço a Newton”.

Para que a física funcione (cair, bater, empurrar), pelo menos um dos objetos da colisão precisa ter um Rigidbody. Geralmente, é o objeto que se move.

  • O Chão: É estático. Ele precisa do Collider. Não coloque Rigidbody no chão, senão o chão vai cair também!
  • O Player: É móvel. Ele precisa do Collider (para ter forma) E do Rigidbody (para ter gravidade).

A Solução Final:

  1. Selecione seu Player.
  2. Add Component > Digite Rigidbody.
  3. Certifique-se de que a caixinha “Use Gravity” está marcada.
  4. Certifique-se de que a caixinha “Is Kinematic” está DESMARCADA (se estiver marcada, ele ignora a física e só se move por código).

Resumo da Ópera (Cheat Sheet)

Copie isso e cole num post-it no seu monitor:

  • Objeto Parado (Chão, Parede): Precisa apenas de Collider.
  • Objeto que Move (Player, Inimigo, Bola): Precisa de Collider + Rigidbody.
  • Atravessou tudo? Faltou Collider em alguém.
  • Não caiu? Faltou Rigidbody ou “Use Gravity” está desligado.

Conclusão

A Unity não adivinha o que você quer. Você precisa dizer explicitamente: “Isso é chão” e “Isso cai”.

Arrume esses componentes, dê o Play e veja seu personagem pousar firme no chão. Agora que a física está garantida, o próximo passo é fazer essa cápsula se mexer quando você aperta os botões.

Mas isso é papo para o próximo post, onde vamos resolver a briga entre Start e Update.

Compartilhe !