# Use o teste de colisão mais simples que se ajuste à forma

> Escolha uma representação de colisão adequada ao seu jogo, reduza verificações de pares desnecessárias e diagnostique objetos que passam por obstáculos.

- URL: https://oneshotgems.ai/pt-BR/topics/game-collision-detection
- Categoria: Para desenvolvedores de jogos
- Tipo: Guia
- Atualizado: 5 de outubro de 2026

A detecção de colisão pergunta se os objetos do jogo se sobrepõem ou se cruzam. A melhor primeira representação é geralmente mais simples que a obra de arte: retângulos para células e plataformas da grade, círculos para atores redondos ou uma pequena coleção de formas para um obstáculo irregular. Comece com uma pergunta clara – tocar, entrar ou cruzar – e escolha um teste que responda de forma consistente. Verificações de pixels perfeitos adicionam complexidade e raramente são necessárias para um jogo cujas regras já são aproximadas.

## Combine o teste com a regra

Para retângulos alinhados ao eixo, compare as extensões esquerda, direita, superior e inferior de cada objeto; a sobreposição ocorre quando os intervalos se cruzam em ambos os eixos. Para círculos, compare a distância central com a soma dos raios. Um jogo de grade pode evitar totalmente a geometria, verificando se dois atores reivindicam a mesma célula.

Crie uma pequena cena de diagnóstico com duas formas coloridas e mostre suas áreas de colisão. Mova cada par para testar contato pelas bordas, sobreposição parcial e uma passagem por pouco sem colisão. Decida se o contato entre bordas conta como colisão e aplique a mesma regra em todo o jogo para que movimento e pontuação não discordem.

## Evite perder travessias rápidas

Um objeto rápido pode estar em um lado de uma parede fina em uma atualização e no outro lado na próxima. Etapas menores de simulação fixa podem ajudar, mas não são a única resposta: teste um segmento varrido ou um alvo expandido quando a amplitude de movimento for grande em relação à espessura do obstáculo.

Com muitos objetos, descarte primeiro os pares que não podem estar próximos usando uma grade ampla ou células espaciais; depois, faça testes detalhados nos pares candidatos. Meça antes de adicionar essa estrutura: para algumas dezenas de entidades, verificações diretas de pares podem ser mais fáceis de manter e suficientes.

## Perguntas

**Os hitboxes precisam corresponder aos contornos dos sprites?** Geralmente não. Um retângulo ou círculo um pouco mais tolerante pode deixar os controles mais justos. Mostre as hitboxes durante o desenvolvimento e ajuste-as conforme a regra pretendida e a expectativa do jogador.

**O Canvas pode me dizer se dois sprites colidem?** O Canvas fornece testes de caminho, como isPointInPath(), para verificar um ponto em relação a um caminho desenhado, mas não define regras gerais de colisão de objetos de jogo. Mantenha a geometria da simulação explícita e independente do desenho.

## Siga sua curiosidade

- [Use delta time sem movimentos bruscos](https://oneshotgems.ai/pt-BR/topics/delta-time-in-games): Aplique o tempo decorrido ao movimento do jogo, escolha uma política de recuperação segura e teste o movimento em diferentes taxas de atualização e após paralisações.
- [Crie um loop de jogo de navegador confiável](https://oneshotgems.ai/pt-BR/topics/browser-game-loop): Estruture atualizações de jogos do navegador e desenhe em torno de quadros de animação sem vincular a velocidade da simulação à taxa de atualização da tela do jogador.
- [Use um intervalo de tempo fixo para física do jogo](https://oneshotgems.ai/pt-BR/topics/fixed-timestep-game-physics): Separe as atualizações físicas da renderização com uma etapa fixa de simulação, trabalho de atualização limitado e testes para travamentos e colisões.

## Leitura complementar

- [MDN: Canvas isPointInPath()](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/isPointInPath)

---
Página canônica: https://oneshotgems.ai/pt-BR/topics/game-collision-detection
