Clones na prática: inimigos, moedas e fases inteiras com um ator só
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
mostreO 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 cloneRepare 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