Criando personagens estilo Mario Bros para jogos 2D
A gente fala muito em personagens de mario bros quando o assunto é plataforma 2D, mas raramente explica como o sprite foi construído na prática. Vou direto ao ponto. Se você quer criar um personagem nesse estilo para seu próprio jogo, o caminho mais eficiente passa por entender pixel art, frame counting e hitbox no Unity ou Godot.
personagem de mario bros: estrutura básica do sprite
Um personagem básico de Mario tem, no mínimo, seis states: parado, andando para a direita, andando para a esquerda, pulando, caindo e morrendo. Cada state precisa de pelo menos dois frames de animação para não parecer travado. O que muita gente não considera é que o tamanho do sprite determina tudo. Se você faz um personagem com 16x24 pixels no padrão SNES e escala pra tela HD, vai parecer uma imagem borrada. O recomendado hoje em dia é trabalhar em 16x24 no nível de design, mas exportar em pelo menos 32x48 com pixel-perfect scaling ativado no engine. Isso garante que o personagem continue nítido em resoluções modernas. No meu caso, eu já perdi uma tarde inteira porque o sprite estava com o centro de rotação (pivot point) deslocado. A animação de pulo parecia que o personagem estava deslizando no chão. A solução foi ajustar o origin point do sprite no editor de textura para exatamente o centro da base dos pés, cerca de 2 pixels acima do canto inferior do frame. Depois disso, a física de pulo ficou coerente com a animação.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Configurando a física no Unity ou Godot
Use CharacterController ou Rigidbody2D dependendo da sua preferência. O erro mais comum é aplicar força direta no eixo Y para o pulo. Se você usa AddForce, o personagem vai ter aceleração variável dependendo do FPS. O correto é definir velocity.y diretamente com um valor fixo, tipo -600 para subir e deixar a gravidade fazer o resto com um valor de 1500 a 2000 dependendo do peso desejado. Outro detalhe importante: o Coyote Time. Sem ele, o jogador sente que o pulo está "bugado". Quando você cai da plataforma e tenta pular nos primeiros 0.1 segundos após perder o contato, o pulo simplesmente não funciona. Implementar Coyote Time com um timer de 0.15 segundos resolve isso facilmente. Acredite, depois que você testa com Coyote Time, não volta atrás.
Pitfalls comuns e alternativas
O problema principal de seguir o estilo clássico de personagem de mario bros é que o design de level fica extremamente restrito. Plataformas muito estreitas ou buracos muito profundos ficam impossíveis sem mecânicas extras como dash ou wall jump. Se o seu jogo precisa de desafios mais difíceis, considere adicionar um double jump ou um dash horizontal. Esses recursos não quebram a estética retrô e ampliam muito a liberdade de level design. Outra armadilha é a animação de aterrissagem. Muita gente esquece esse frame e o personagem parece flutuar ao tocar o chão. Um frame curto de squashing (deformação de 1 ou 2 frames onde o personagem afunda um pouco) antes de voltar ao idle dá uma sensação muito mais tátil e profissional.
Para quem quer começar rápido, existe o sprite pack "Super Mario Bros Style Character" no OpenGameArt que já vem com todas as animações básicas e hitboxes configuradas. Basta importar e ajustar a physics. Para quem quer fazer do zero, recomendo usar o Aseprite com grid de 16x16 por frame. Leva umas duas semanas para ficar bom, mas o controle criativo é completo.