Pular para o conteúdo
Baixar

Cenário com tiles

Você quer montar a fase pintando o chão e as paredes, sem arrastar um objeto para cada bloco.

  1. Tileset. Importe a imagem dos tiles como sprite, fatie no tamanho do tile e crie o tileset em + › Novo tileset…. Na aba dele, clique nos tiles que são sólidos (chão, parede).
  2. Camada. No painel Camadas, + Camada › Tiles. Dê o nome Chao.
  3. Pinte. Escolha um tile na paleta do Inspetor e arraste na room. O botão direito apaga.

O passo a passo completo está em Tileset e tiles.

Nada muda. O jogador de plataforma é o mesmo de quando o chão era um objeto sólido:

void Player::onUpdate() {
hspeed = axis("esquerda", "direita") * 1.5f;
if (pressed("pular") && onGround()) vspeed = -4.5f;
moveAndStop();
}
  • Os tiles marcados como sólidos no tileset barram o movimento, como um objeto com Sólido marcado.
  • moveAndStop() para no tile, e onGround() vê o tile embaixo do jogador.
  • A colisão é feita pela grade, olhando só os tiles que a caixa do jogador toca. Uma fase grande, cheia de tiles, não fica mais lenta.

Enfeites que não colidem. Crie outra camada de Tiles, Enfeites, e desligue Colide no Inspetor. Pinte nela a grama, as flores e as placas.

Saber em que tile o jogador está. tileAt devolve o número do tile num ponto (ou -1 se não há tile), e solidAt diz se há algo sólido ali:

if (tileAt("Chao", x, y + 12) == 7) Audio::play("passo_na_pedra");
if (solidAt(x + 10, y)) flipX = !flipX;

Bordas e cantos sozinhos. Marque um terreno no tileset e use o pincel de terreno. Veja Tileset e tiles.