Clones na prática: inimigos, moedas e fases inteiras com um ator só

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

Imagine um jogo com 50 moedas. Criar 50 atores idênticos seria impraticável: qualquer ajuste teria que ser repetido 50 vezes. Clones resolvem isso: um único ator serve de “molde”, e o jogo cria cópias em tempo de execução. Cada cópia roda os mesmos scripts, mas com posição e estado próprios.

Os três blocos de clone

  • crie clone de [mim mesmo / outro ator] — cria a cópia. O clone nasce na mesma posição e com os mesmos valores de variáveis locais do original naquele instante.
  • quando clone iniciar — o evento que roda em cada clone recém-nascido. É aqui que o clone se configura: posição, fantasia, visibilidade.
  • apague este clone — remove o clone. Essencial para não acumular clones invisíveis consumindo memória.

Detalhe fundamental: o script “quando iniciar” NÃO roda nos clones — só o “quando clone iniciar”. E vice-versa: o ator original não executa “quando clone iniciar”.

O padrão configurar-antes-de-clonar

Como o clone herda as variáveis locais do original no momento da criação, o jeito certo de criar clones diferentes entre si é configurar as variáveis ANTES de cada “crie clone”:

// no ator Moeda (original, escondido):
mude posX para 100
crie clone de mim mesmo     // clone 1 nasce sabendo posX=100
mude posX para 250
crie clone de mim mesmo     // clone 2 nasce sabendo posX=250

// no script "quando clone iniciar":
vá para x: posX y: -100
mostre

O original funciona como uma “fábrica”: fica escondido (bloco “esconda” no quando iniciar) e só produz cópias configuradas.

Exemplo completo: chuva de moedas

// ator Moeda — script do original:
quando iniciar:
  esconda
  sempre:
    espere 1 segundo
    mude posX para (número aleatório entre -220 e 220)
    crie clone de mim mesmo

// script de cada clone:
quando clone iniciar:
  vá para x: posX y: 180
  mostre
  repita até (y < -170) ou (tocando em Jogador):
    adicione -4 a y
  se tocando em Jogador:
    adicione 1 a pontuação    // variável global!
  apague este clone

Repare na mistura: posX é local (cada moeda cai num lugar), pontuação é global (todas as moedas somam no mesmo placar).

Clones para construir fases

O uso mais poderoso de clones é gerar cenários. Um ator “Tile” com a imagem dos blocos do cenário pode ser clonado dezenas de vezes, cada clone assumindo uma posição e um recorte diferente do spritesheet, guiado por uma lista com o mapa da fase. A fase inteira — chão, plataformas, decoração — vira um ator e uma lista de dados.

Esse padrão é usado nos projetos de exemplo estilo Mario e Sonic: um loop percorre a lista TILE_GRID, calcula a posição de cada célula e cria um clone por tile. Combine com o tutorial de spritesheets para entender o recorte de imagem por clone.

💡

Limite o número de clones simultâneos e sempre apague clones fora da tela ou consumidos — projetos com milhares de clones vivos ficam lentos em qualquer engine.

Pronto para colocar em prática?

Abrir o editor