Construct do Zero: Movimento 2D com Behaviors (Sem Programar)

Capítulo 5

Tempo estimado de leitura: 8 minutos

+ Exercício

O que são Behaviors e por que usar para movimento

No Construct, Behaviors são “módulos” prontos que adicionam capacidades a um objeto sem você precisar programar do zero. Para movimento 2D, eles resolvem a parte física e matemática (velocidade, aceleração, gravidade, colisões), enquanto os eventos entram para dar controle fino: travar o personagem, aplicar um dash, virar o sprite, limitar áreas e reagir a situações do jogo.

Neste capítulo você vai aplicar e configurar três behaviors comuns de movimento: 8Direction (movimento livre), Top-down (movimento com aceleração/desaceleração mais “suave”) e Platform (pulo/gravidade). Em seguida, vai combinar com eventos para ajustes que o behavior sozinho não cobre.

Escolhendo o behavior certo (8Direction, Top-down ou Platform)

BehaviorQuando usarPontos fortesCuidados
8DirectionJogos com movimento em 8 direções (WASD/analógico), sem gravidadeConfiguração rápida, resposta imediataPode ficar “seco” sem aceleração; precisa de eventos para dash/travas
Top-downMovimento top-down com sensação de inércia (acelera e freia)Aceleração/desaceleração nativas, sensação mais naturalExige ajuste fino para não ficar “escorregadio”
PlatformPlataforma/lateral com pulo e gravidadeGravidade, pulo, controle no ar, colisão com chãoPrecisa de sólidos bem configurados e atenção a rampas/escadas

Passo a passo: Movimento com 8Direction (movimento livre)

1) Aplicar o behavior no personagem

  • Selecione o sprite do personagem.
  • Em Behaviors > Add > escolha 8Direction.

2) Configurar velocidade e resposta

Nas propriedades do 8Direction, ajuste:

  • Max speed: velocidade máxima (ex.: 220).
  • Acceleration: quão rápido chega na velocidade (ex.: 1200).
  • Deceleration: quão rápido para (ex.: 1400).
  • Directions: 4 ou 8 direções (use 8 para diagonal).
  • Set angle: se ligado, o objeto gira para a direção do movimento. Para personagens com animação, geralmente deixe desligado e controle a “virada” via eventos.

3) Colisão com paredes

Para impedir atravessar paredes, use objetos de parede com behavior Solid (ou um tilemap configurado como sólido, dependendo do seu projeto). O 8Direction respeita sólidos automaticamente.

Passo a passo: Movimento Top-down (aceleração/desaceleração mais natural)

1) Aplicar o behavior

  • Selecione o personagem > Add behavior > Top-down.

2) Ajustar parâmetros principais

  • Max speed (ex.: 200).
  • Acceleration (ex.: 900).
  • Deceleration (ex.: 1100).
  • Rotate: normalmente Off para não girar o sprite.

Dica prática: se o personagem “patina”, aumente Deceleration. Se demora a responder, aumente Acceleration.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

Passo a passo: Movimento Platform (pulo e gravidade)

1) Aplicar o behavior Platform

  • Selecione o personagem > Add behavior > Platform.

2) Configurar velocidade, pulo e gravidade

Parâmetros típicos para começar (ajuste ao seu jogo):

  • Max speed: 260
  • Acceleration: 1500
  • Deceleration: 1700
  • Jump strength: 650
  • Gravity: 1500
  • Max fall speed: 900

3) Preparar chão e plataformas

  • Marque o chão/plataformas como Solid.
  • Se usar plataformas que atravessam por baixo (tipo “one-way”), use behavior específico de plataforma one-way (se estiver no seu plano) ou uma lógica com eventos e colisões; para este exercício, foque em sólidos comuns.

Combinando Behaviors com eventos para controle fino

Behaviors resolvem o movimento base, mas jogos quase sempre precisam de regras extras. A seguir, padrões práticos para você adaptar ao seu personagem.

1) Bloquear/desbloquear movimento (cutscene, diálogo, stun)

Crie uma variável no personagem:

  • isLocked (booleano ou número 0/1)

Eventos (exemplo genérico):

Event: Player.isLocked = 1  -> Player.8Direction: Set enabled = false  (ou Top-down/Platform: Set enabled = false)
Event: Player.isLocked = 0  -> Player.8Direction: Set enabled = true

Observação: use o action equivalente do behavior que você estiver usando (8Direction/Top-down/Platform). A ideia é a mesma: desativar o behavior para travar o movimento.

2) Dash simples (impulso rápido com cooldown)

Objetivo: ao apertar uma tecla (ex.: Shift), o personagem dá um impulso curto na direção atual. Vamos usar eventos para: (1) impedir spam com cooldown, (2) aplicar impulso, (3) opcionalmente travar controle durante o dash.

Crie variáveis no personagem:

  • canDash (inicia 1)
  • dashTime (número, inicia 0)
  • dashDirX e dashDirY (para top-down/8dir) ou dashDir (para plataforma, esquerda/direita)

Exemplo de lógica (8Direction/Top-down):

On key Shift pressed AND Player.canDash = 1 AND Player.isLocked = 0 -> Set Player.canDash = 0; Set Player.dashTime = 0.12
On key Shift pressed ... -> Set dashDirX = sign(Player.8Direction.VectorX) ; Set dashDirY = sign(Player.8Direction.VectorY)
Every tick AND Player.dashTime > 0 -> Player: Set position to (X + dashDirX * 900 * dt, Y + dashDirY * 900 * dt); Set dashTime = dashTime - dt
Every tick AND Player.dashTime <= 0 AND Player.canDash = 0 -> (start cooldown timer) after 0.6s set canDash = 1

Notas importantes:

  • Direção do dash: se o jogador estiver parado, você pode usar a “última direção” salva em variáveis (ex.: lastDirX/lastDirY) para ainda permitir dash.
  • Colisão durante dash: se você mover por posição, o personagem pode “forçar” atravessar cantos. Para reduzir isso, mantenha paredes como Solid e teste; se necessário, diminua a força do dash ou aplique dash por velocidade (quando o behavior permitir) em vez de teleporte por posição.
  • Travar controle: durante dash, você pode desativar o behavior e mover manualmente, reativando ao final.

3) Virar o sprite (flip) conforme direção

Mesmo com movement behavior, a animação geralmente precisa de um “espelhamento” para esquerda/direita.

Exemplo (para jogos laterais ou top-down com sprite olhando para lados):

Every tick: if Player is moving left -> Player: Set mirrored = true
Every tick: if Player is moving right -> Player: Set mirrored = false

Como detectar “moving left/right”:

  • 8Direction: use o vetor X (negativo = esquerda, positivo = direita) ou compare posição atual com posição anterior (salva em variáveis).
  • Top-down: mesma ideia (vetor/velocidade no eixo X).
  • Platform: use a entrada (tecla esquerda/direita) ou a velocidade X do behavior.

4) Ajuste de velocidade máxima em situações (lama, gelo, buff)

Você pode alterar parâmetros do behavior em tempo real via eventos. Exemplo: ao entrar numa área de lama, reduzir Max speed e aumentar Deceleration.

On collision Player with MudArea -> Player.Top-down: Set max speed = 120
On end overlap Player with MudArea -> Player.Top-down: Set max speed = 200

Exercício guiado: movimento completo + limites do mapa

Objetivo do exercício

  • Implementar movimento completo do personagem (escolha 1: 8Direction, Top-down ou Platform conforme seu jogo).
  • Configurar aceleração, desaceleração e velocidade máxima (e pulo/gravidade se for Platform).
  • Adicionar: bloquear movimento (isLocked), dash simples e virar sprite.
  • Limitar a área jogável com paredes/limites para o personagem não sair do mapa.

Parte A — Movimento base

  • Aplique o behavior escolhido no personagem.
  • Ajuste os valores iniciais sugeridos neste capítulo e teste no preview.
  • Crie um conjunto de paredes (sprites simples ou tilemap) e aplique Solid.
  • Teste colisão: o personagem deve parar ao encostar nas paredes.

Parte B — Limites do mapa (paredes invisíveis)

Crie 4 objetos retangulares (ou um único objeto com instâncias) para formar uma “moldura” em volta da área jogável:

  • Top (limite superior)
  • Bottom (limite inferior)
  • Left (limite esquerdo)
  • Right (limite direito)

Configuração:

  • Defina esses limites como Solid.
  • Deixe invisível no jogo (opacidade 0% ou marque como não visível no início), mas mantenha a colisão ativa.

Alternativa (sem sólidos): se preferir, use evento para “clamp” da posição (prender X/Y dentro de um intervalo). Isso é útil em top-down sem paredes internas, mas com bordas fixas.

Every tick -> Player: Set X to clamp(Player.X, minX, maxX)
Every tick -> Player: Set Y to clamp(Player.Y, minY, maxY)

Parte C — Bloqueio de movimento

  • Crie a variável isLocked no personagem.
  • Faça um evento de teste: ao apertar uma tecla (ex.: L), alternar isLocked entre 0 e 1.
  • Quando isLocked=1, desative o behavior de movimento.

Parte D — Dash simples

  • Crie canDash e dashTime.
  • Ao apertar Shift, se canDash=1 e isLocked=0, iniciar dashTime e colocar canDash=0.
  • Durante dashTime, mova o personagem com impulso (por posição com dt) e, se quiser, desative o behavior para evitar interferência.
  • Ao terminar, reative o behavior e inicie cooldown para canDash voltar a 1.

Parte E — Virar sprite

  • Adicione eventos para espelhar o sprite quando mover para esquerda/direita.
  • Teste com animações de andar/parado: o flip deve acontecer sem girar o objeto.

Checklist de validação

  • O personagem se move com a sensação desejada (resposta, aceleração e freio).
  • Não atravessa paredes e não sai da área jogável.
  • Ao travar (isLocked=1), o personagem para e não responde ao input.
  • Dash funciona, tem duração curta e cooldown.
  • Sprite vira corretamente para esquerda/direita.

Agora responda o exercício sobre o conteúdo:

Em um jogo top-down no Construct, você quer impedir que o personagem saia da área jogável sem mostrar paredes visíveis. Qual abordagem atende a isso de forma direta, mantendo a colisão ativa?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Para limitar a área jogável, você pode criar uma “moldura” de objetos Solid invisíveis ao redor do mapa, ou usar eventos com clamp para restringir X e Y a um intervalo, impedindo que o personagem ultrapasse as bordas.

Próximo capitúlo

Construct do Zero: Física, Colisões e Resolução de Problemas Comuns

Arrow Right Icon
Capa do Ebook gratuito Construct do Zero: Desenvolvendo Jogos 2D Sem Programar (com Eventos)
28%

Construct do Zero: Desenvolvendo Jogos 2D Sem Programar (com Eventos)

Novo curso

18 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.