Inteligência de inimigos: perseguição, patrulha e máquinas de estado

10 min de leitura·Atualizado em 14 de junho de 2026

Um inimigo que só anda em linha reta é entediante. O que torna um adversário interessante é o comportamento: ele patrulha, percebe o jogador, persegue, talvez desista e volte ao posto. A boa notícia é que “inteligência” em jogos quase nunca é complicada — é um punhado de condicionais bem organizadas.

Patrulha: ir e voltar

O comportamento mais básico é patrulhar entre dois pontos. Uma variável local direção (1 ou -1) controla o sentido, e o inimigo inverte ao chegar nos limites:

sempre:
  adicione (velocidade × direção) a x
  se posição x > limiteDireito: mude direção para -1
  se posição x < limiteEsquerdo: mude direção para 1

Inverter a direção também é o momento de espelhar a fantasia com “aponte para a direção 90/-90” no estilo de rotação esquerda-direita.

Detecção: percebendo o jogador

O reporter “distância até [ator]” é o sentido do inimigo. Compare com um raio de detecção para decidir se ele “viu” o jogador:

se (distância até Jogador) < 150:
  // o jogador entrou no campo de visão
  mude estado para "perseguindo"
senão:
  mude estado para "patrulhando"
💡

Para um campo de visão direcional (só enxerga para a frente), combine a distância com uma comparação entre a posição X do jogador e a direção do inimigo. Assim dá para passar por trás sem ser visto.

Perseguição

Perseguir é mover-se em direção ao jogador. A forma mais suave usa a diferença de posições, como vimos no tutorial de movimento:

mude alvoX para (atributo x de Jogador)
se alvoX > posição x: adicione velocidadePerseguicao a x
se alvoX < posição x: adicione (-velocidadePerseguicao) a x

Deixe a velocidade de perseguição um pouco maior que a de patrulha — a aceleração comunica ao jogador que o inimigo o detectou, criando tensão.

Máquinas de estado

Quando o inimigo tem vários comportamentos (patrulhar, perseguir, atacar, recuar), organize tudo com uma variável estado e um “Se” para cada valor. Isso é uma máquina de estados — o padrão que a indústria inteira usa para IA de jogos:

sempre:
  se estado = "patrulhando":  ... // anda ida e volta; vê o jogador → "perseguindo"
  se estado = "perseguindo":  ... // corre até o jogador; perto demais → "atacando"
  se estado = "atacando":     ... // golpeia; jogador fugiu → "patrulhando"

Cada estado faz uma coisa e decide para qual estado transicionar. Adicionar um comportamento novo é adicionar um “Se” — a complexidade cresce de forma controlada, sem virar um emaranhado de condições.

Toques finais

  • Use clones para popular a fase com vários inimigos que compartilham os mesmos scripts mas têm estado próprio.
  • Adicione um pequeno atraso aleatório nas decisões para os inimigos não se moverem como um bloco sincronizado.
  • Avise o jogador: um balão de “!” ou uma mudança de cor ao detectar deixa o comportamento legível e justo.

Pronto para colocar em prática?

Abrir o editor