Personagem tremendo ou grudando na parede no Construct 3? Entenda a colisão
Personagem tremendo ou grudando na parede no Construct 3? Entenda a colisão Você adiciona o Platform behavior ao personagem, coloca Solid no chão e nas paredes, aperta Play e… o personagem gruda na parede. Ou treme parado. Ou parece “engasgar” quando troca de animação. Calma: isso não costuma ser um bug misterioso do Construct. Na…
Ned7 min read
This content isn't available in English yet — you're reading the original.

Personagem tremendo ou grudando na parede no Construct 3? Entenda a colisão
Você adiciona o Platform behavior ao personagem, coloca Solid no chão e nas paredes, aperta Play e… o personagem gruda na parede. Ou treme parado. Ou parece “engasgar” quando troca de animação.
Calma: isso não costuma ser um bug misterioso do Construct. Na grande maioria das vezes, o problema está em um destes três lugares:
- o Polígono de Colisão muda entre os frames da animação;
- o origin muda de lugar entre os frames;
- o Comportamento Plataforma está aplicado direto no sprite animado.
Vamos entender por que cada um causa o problema e, no final, montar a solução que a própria documentação do Construct recomenda.
Se esta é sua primeira semana com a engine, vale ler antes Como começar no Construct 3? Conhecendo a engine antes de criar seu primeiro jogo 🎮
🧠 Antes de tudo: a imagem não é o que colide
💡 Conceito
Quando dois objetos se encostam no Construct, a engine não olha para os pixels do desenho. Ela olha para o collision polygon (polígono de colisão): uma forma geométrica invisível associada a cada frame do sprite.
Pense assim: a imagem é a roupa do personagem. O collision polygon é o corpo de verdade. A roupa pode ser larga e arredondada, mas quem bate na parede é o corpo.
Agora voltando ao conceito técnico: cada frame de animação pode ter o seu próprio collision polygon. E é justamente aí que mora boa parte dos problemas.
Culpado 1: o collision polygon muda entre os frames
O Platform behavior verifica o tempo todo se o personagem está encostando em algo sólido. Ele precisa saber onde está o chão, onde está a parede e se há uma rampa.
Agora imagine o personagem encostado na parede. A animação troca de frame e, no frame novo, o polígono é um pouco mais largo. De repente, parte do “corpo” está dentro da parede.
O Platform não esperava isso. Ele tenta resolver a situação, e o resultado aparece para você como tremor, travamento ou movimento torto.
Percebe? O personagem não “decidiu” grudar na parede. Foi a forma de colisão que mudou de tamanho no meio do caminho.
Como verificar:
1 – Dê dois cliques no sprite do personagem para abrir o Editor de Animações.

2 – Selecione a ferramenta Polígono de Edição.

3 – Passe pelos frames de cada animação e observe se o polígono muda de forma ou de tamanho.

Como corrigir no caso mais comum:
1 – Com a ferramenta Collision polygon ativa, clique com o botão direito no canvas e escolha Definir para caixa de limite. Isso transforma o polígono em um retângulo simples.

2 – Clique com o botão direito de novo e escolha Aplicar à toda animação, para que todos os frames daquela animação usem o mesmo polígono.

3 – Repita em cada animação (parado, correndo, pulando…).
⚠️ Cuidado
“Aplicar à toda animação” vale para a animação que está aberta. Se o personagem tem cinco animações, são cinco verificações.
Culpado 2: o origin muda de lugar entre os frames
💡 Conceito
O origin (ponto de origem) é o ponto do sprite que representa a posição X e Y do objeto no jogo. Ele também é o eixo em torno do qual o objeto gira.
Pense no origin como um alfinete que prende o desenho no tabuleiro. Quando o Construct diz “o personagem está em X = 200”, é o alfinete que está em X = 200. O resto do desenho, e o collision polygon junto com ele, fica posicionado em relação a esse ponto.
Tradução técnica: se o origin está nos pés em um frame e três pixels acima no frame seguinte, o desenho inteiro “pula” quando a animação troca de frame. O polígono pula junto. E um polígono que pula pode acabar dentro da parede, exatamente como no culpado 1.
Como corrigir:
1 – No Editor de Animações, selecione a ferramenta Pontos de Imagem.

2 – Posicione o Origin. Em um jogo de plataforma visto de lado, o lugar mais prático costuma ser o centro inferior, nos pés do personagem.

3- Use Aplicar em toda animação para levar essa posição a todos os frames.

4 – Repita em cada animação e confira frame a frame se o ponto realmente ficou no mesmo lugar do desenho.
🧪 Experimente
Quer ver o problema acontecer de propósito? Em um personagem que já funciona bem, mova o origin de um único frame cinco pixels para cima. Rode o jogo e observe o personagem parado.
Viu o tremor? Agora volte o origin para o lugar e rode de novo. Essa é a relação de causa e efeito que você vai reconhecer nos próximos projetos.
Culpado 3: o Platform está no sprite animado
Mesmo com polígonos e origins bem ajustados, existe uma recomendação oficial que resolve o problema pela raiz.
O tutorial de jogo de plataforma da Scirra orienta aplicar o Platform behavior a um retângulo invisível, sem animações, e posicionar o sprite animado por cima dele. O motivo é o mesmo que vimos até aqui: a troca de frame pode deixar o objeto parcialmente enfiado na parede e confundir o Platform.
Em outras palavras: em vez de tentar fazer a animação se comportar bem, separamos as responsabilidades.
🧠 Pense assim
- PlayerBox: o corpo. Um retângulo que nunca muda, invisível, com o Platform behavior. É ele que anda, pula e colide.
- PlayerAnim: a roupa. O sprite com todas as animações, sem o Platform. Ele só acompanha o PlayerBox.
Como o PlayerBox não anima, o polígono dele nunca muda de tamanho. O Platform sempre sabe exatamente onde está o corpo.
⚠️ Cuidado
Este artigo trata de jogos de plataforma vistos de lado, que usam o Platform behavior. Se o seu jogo é visto de cima, o behavior mais comum para o movimento é outro (o 8 Direction), e o diagnóstico pode ser diferente.
🛠️ Montando o padrão PlayerBox + PlayerAnim
O corpo (PlayerBox):
1 – Crie um novo Sprite e desenhe um retângulo de qualquer cor. Renomeie para PlayerBox.

2 – Ajuste o tamanho para algo próximo do corpo do personagem, sem braços, armas ou cabelo sobrando.

3 – Coloque o Origin no centro inferior.

4 – Deixe o collision polygon como retângulo (Definir para caixa de limite).

5 – Nas propriedades do objeto, desmarque Visibilidade Inicial.

6 – Adicione o comportamento Plataforma ao PlayerBox (e remova do sprite animado, se ele estava lá).

A roupa (PlayerAnim):
1 – Use o sprite animado que você já tem. Renomeie para PlayerAnim, se quiser deixar a organização mais clara.
2 – Confira se o Origin está nos pés em todos os frames de todas as animações.
A regra que liga os dois:
Na Event Sheet, crie um evento:
- Condição: Sistema → A cada tick
- Ação: PlayerAnim → Definir posição para outro objeto → PlayerBox

O parâmetro de image point pode ficar em 0, que corresponde ao origin. Como os dois têm o origin nos pés, a roupa fica exatamente sobre o corpo.
O cenário:
Chão e paredes recebem o behavior Solid. Plataformas que o personagem deve atravessar por baixo e pisar por cima recebem Jump-thru.
Agora teste: ande contra as paredes, pule, encoste nas bordas, troque de animação. O Platform behavior vem com controles de teclado prontos (propriedade Default controls), então dá para testar sem criar nenhum evento de movimento.

🧪 Experimente
Durante o teste, marque de novo o Initially visible do PlayerBox. Rode o jogo e observe o retângulo e a animação andando juntos.
Repare que é o retângulo que encosta na parede, não o desenho. Agora aumente a largura do PlayerBox e veja o personagem parar mais longe da parede. Diminua demais e veja o desenho “entrar” nela. Encontre o tamanho que parece certo e desmarque a visibilidade de novo.
💥 Ainda treme ou gruda? Onde olhar agora
Com o padrão PlayerBox + PlayerAnim, quem colide é só o PlayerBox. Então o diagnóstico muda de lugar:
- Treme ou gruda: investigue o PlayerBox (tamanho, origin, collision polygon) e os objetos do cenário onde o problema acontece. Será que o Platform realmente está só no PlayerBox?
- A animação “pula”, mas o movimento está certo: agora o problema é só visual. Volte ao culpado 2 e confira o origin dos frames do PlayerAnim.
✅ Checkpoint
- O Construct colide usando o Polígono de Colisão, não a imagem.
- Polígono ou origin mudando entre frames pode deixar o personagem parcialmente dentro da parede.
- A solução recomendada é separar corpo (PlayerBox, com Platform) e roupa (PlayerAnim, com as animações).
🎯 Missão GNOR
- Pegue o projeto em que o personagem trava (ou crie um novo com um chão e duas paredes).
- Monte o padrão PlayerBox + PlayerAnim.
- Teste andando contra as paredes e pulando perto delas.
Desafio extra: quando o jogador anda para a esquerda, o PlayerAnim continua olhando para a direita. Consegue descobrir como fazer a roupa virar para o lado certo sem mexer no PlayerBox?
Se o seu personagem travava, conta nos comentários qual dos três culpados era o seu.
Próximo passo
Agora temos um corpo que colide de forma estável e uma roupa que só acompanha. Só que essa roupa ainda não sabe quando deve correr, pular ou cair. Esse é o próximo problema: trocar a animação de acordo com o que o Platform está fazendo.
Agradecimentos
Sprite de Samurai criado por Mattz Art
Um grande Abraço!

Newsletter
Keep exploring with GNOR
Written by
Ned
Conversa
Comentários
Carregando comentários…