Módulo 4 · Aula 4.5 · Dano, invencibilidade e buracos
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 10 h/a | ⭐⭐⭐ | GDevelop 5 (gdevelop.io) | C2, C5 |
Objetivos de aprendizagem
- Centralizar o dano numa "porta de entrada" única (variável
Dano). - Dar invencibilidade temporária com temporizador.
- Diferenciar pular em cima do inimigo de encostar de lado.
- Achar e corrigir um erro de ordem de subeventos.
- Mandar o jogador de volta ao ponto de retorno quando cair num buraco.
Pré-requisitos
Aulas 4.3 e 4.4.
Materiais
Computador com o GDevelop; espinho.png; sons dano.wav e pulo.wav.
Conceitos
Uma porta de entrada para o dano. Espinho, calango e (na Aula 4.8) pedra podem machucar. Em vez de escrever "perde vida, toca som, liga invencibilidade" três vezes, cada perigo só faz Dano = 1. Um único evento lê Dano e faz o resto. Quando quiser mudar o que acontece no dano, muda num lugar só.
Invencibilidade. Depois de um dano, 1,5 s sem tomar outro. Controlada pelo temporizador Invencivel: só aceita dano se ele passou de 1,5. No começo da cena ele também é zerado, o que dá 1,5 s de proteção ao começar.
Pular em cima. Na colisão com o calango, a condição Está caindo separa os casos: caindo = derrubou o calango (e quica para cima); não caindo = encostou de lado (dano).
O erro da ordem (aconteceu de verdade). Na primeira versão da Trilha, o subevento "caindo → derruba o calango e quica" vinha antes do "não caindo → dano". O teste automático pegou: o jogador derrubava o calango e perdia vida. Motivo: depois do quique, no mesmo quadro, o jogador já está pulando (não caindo), então o subevento de baixo também era verdadeiro. Trocando a ordem, o "não caindo" é testado antes do quique, e tudo funciona.
Buraco. Se o jogador passa de y = 650 (abaixo da tela), perde uma vida e volta para VoltaX, VoltaY - 48. Esse caso não espera a invencibilidade: cair é sempre perder.
Exemplos
| Situação | Resultado |
|---|---|
| encosta no xique-xique | Dano = 1 → perde 1 vida (se não estiver invencível) |
| cai em cima do calango | calango some, jogador quica |
| encosta no calango de lado | Dano = 1 |
| cai no buraco | perde 1 vida e volta ao ponto de retorno |
Tutorial passo a passo
Parte A. A porta do dano (60 min)
- Variáveis de cena
Dano(0) eVidas(3). ZereVidase o temporizadorInvencivelno começo da cena. - Objeto
Espinho; três instâncias no chão. - Evento: Colisão Jogador com Espinho →
Dano= 1. - Evento com duas condições:
Dano= 1 e Valor de um temporizador de cena"Invencivel"≥ 1,5. Ações:Vidassubtrair 1; Iniciar (ou redefinir) um temporizador de cena"Invencivel"; som de dano. - Evento sem condição, logo abaixo:
Dano= 0.
Parte B. Calango: em cima ou de lado (60 min)
- Evento: Colisão Jogador com Calango, sem ações. Dentro dele, dois subeventos nesta ordem:
- Está caindo (invertida) →
Dano= 1; - Está caindo → Exclui o objeto Calango; Permitir pular novamente; Simular tecla de salto; som de pulo.
- Está caindo (invertida) →
- Visualizar. Teste os dois jeitos.
- Experimento: troque a ordem dos subeventos e pule em cima do calango. Observe o placar. Volte a ordem certa e explique no diário o que aconteceu.
Parte C. Buraco (40 min)
- Evento: condição Posição Y do Jogador > 650. Ações:
Vidassubtrair 1; Posição do Jogador =VoltaX,VoltaY - 48; reiniciar"Invencivel"; som de dano.
Parte D. Testar (40 min)
- Faça a tabela do Resultado esperado jogando você mesmo. Marque o que não bateu.
Imagens
- Captura real, subeventos do calango na ordem certa, com o comentário "A ordem importa":
recursos/imagens/gdevelop/captura-trilha-eventos-3.png
. - Captura real, grupo "Dano e vidas":
recursos/imagens/gdevelop/captura-trilha-eventos-4.png
.
Indicação da interface
| Item | Onde fica |
|---|---|
| Subevento | botão de adicionar subevento na barra da folha, com o evento pai selecionado |
| Arrastar para trocar a ordem | segurar a alça à esquerda do evento e soltar na nova posição |
| Está caindo, Permitir pular novamente, Simular tecla de salto | objeto Jogador, grupo do comportamento de plataforma |
| Condição Posição Y | objeto Jogador, grupo de posição |
O código completo
Grupo "Inimigos e perigos" (parte):
Jogador está em colisão com Calango
Comentário: A ordem importa: ...
subevento: (NÃO) Jogador está caindo → Alterar a variável Dano: definir como 1
subevento: Jogador está caindo → Deletar Calango
Permitir Jogador saltar novamente
Simular que está pressionando a teda de salto para Jogador
Reproduzir o som sons/pulo.wav, vol.: 70, loop: não
Jogador está em colisão com Espinho → Alterar a variável Dano: definir como 1
Grupo "Dano e vidas":
A variável Dano = 1
O temporizador "Invencivel" ≥ 1.5 segundos → Alterar a variável Vidas: subtrair 1
Iniciar (ou resetar) o temporizador "Invencivel"
Reproduzir o som sons/dano.wav, vol.: 70, loop: não
(sem condição) → Alterar a variável Dano: definir como 0
A posição Y de Jogador > 650 → Alterar a variável Vidas: subtrair 1
Altere a posição de Jogador: definir como VoltaX (eixo x),
definir como VoltaY - 48 (eixo y)
Iniciar (ou resetar) o temporizador "Invencivel"
Reproduzir o som sons/dano.wav, vol.: 70, loop: nãoExplicação do código
Dano= 0 no fim garante que um dano "pendente" durante a invencibilidade seja descartado, e não guardado para depois.- Permitir pular novamente antes de Simular tecla de salto: sem ela o comportamento não deixa pular no ar.
Resultado esperado (testado)
O teste automático conferiu na Trilha: encostar de lado no calango tira 1 vida; durante a invencibilidade, outro encontro não tira; cair em cima derruba o calango sem perder vida; o espinho tira 1 vida; cair no buraco tira 1 vida e devolve ao início (ou à bandeira, se já foi tocada).
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| Perde todas as vidas num encostão | falta a condição do temporizador | "Invencivel" ≥ 1,5 |
| Derruba o calango e perde vida | subeventos na ordem errada | "não caindo" primeiro |
| Cai em cima mas toma dano | colisão começa quando o jogador já parou de cair (inimigo muito baixo) | aumentar a altura do calango ou usar a posição Y na comparação |
| Volta para dentro do chão | esqueceu - 48 no Y | o jogador tem 48 px de altura |
| Toma dano assim que a fase começa | "Invencivel" não foi iniciado | iniciar no começo da cena |
Exercício guiado
Em 3 segundos, o jogador encosta no espinho nos tempos 0,2 s, 0,9 s, 1,8 s e 2,5 s (contando a partir de um dano anterior em 0 s). Quantas vidas perde? (Resposta: 1, no tempo 1,8 s. Em 0,2 e 0,9 ainda está invencível; depois de 1,8 fica invencível até 3,3.)
Desafio individual
Faça o jogador ser empurrado para trás ao tomar dano de lado (ação de velocidade horizontal atual do comportamento).
Desafio avançado (opcional)
Coloque um espinho no teto que só machuca se o jogador pular embaixo dele. Precisa de evento novo?
Critérios de avaliação
- Porta única de dano funcionando com invencibilidade.
- Registro do experimento da ordem dos subeventos, com explicação.
Checklist de conclusão
Extensão
Liste três situações da vida real em que "um único lugar para decidir" evita confusão (exemplo: secretaria da escola).