Minilop Retroware

MPAGD Iniciantes · Parte 28 de 29

Vamos criar um jogo com MPAGD, Parte 28: Mergulho a fundo no JUMP

6 de novembro de 2021

Se estás a desenhar um jogo 2D de vista lateral, como um jogo de plataformas, é provável que o teu jogador precise de saltar (JUMP). Algo que se adiciona facilmente associando um comando JUMP a uma tecla específica.

Neste momento, no nosso jogo temos algumas linhas de código no Player Event que tratam do salto:

IF KEY FIRE
   JUMP 7
ENDIF

O “7” é a força do JUMP; podemos mudá-lo para outro valor se quisermos um salto mais alto ou mais baixo.

Tudo bastante simples.

Mas o que talvez não saibas é que o MPAGD também tem duas variáveis adicionais do jogador com as quais podemos trabalhar para alterar o funcionamento do salto, ou o que o jogador pode ou não fazer no ar. São:

AIRBORNE: tem o valor 0 quando o jogador está no chão e aumenta quanto mais tempo estiver no ar

JUMPSPEED: guarda um valor que controla a velocidade de subida/descida. No código podemos saber se o jogador está a subir ou a descer.

Vamos testar. Primeiro vamos criar um ecrã de teste simples. No teu editor de ecrãs, cria um ecrã com um conjunto de wallblocks por todo o contorno. Depois certifica-te de que adicionas o teu sprite de jogador com o Sprite Positions Editor.

Adiciona o teu ecrã ao Map e prime enter para o tornar o ecrã inicial.

A seguir, abre o código do teu Player Event e adiciona o seguinte código acima do comando FALL:

IF KEY OPTION2
   ADD 1 TO J
   WHILE KEY OPTION2
   ENDWHILE
   IF J > 20 
      LET J = 0
   ENDIF
ENDIF

AT 2 3
PRINT "JUMP:"
AT 2 13
DISPLAY TRIPLEDIGITS J

AT 3 3
PRINT "JUMPSPEED:"
AT 3 13
DISPLAY TRIPLEDIGITS JUMPSPEED

AT 4 3
PRINT "AIRBORNE:"
AT 4 13
DISPLAY TRIPLEDIGITS AIRBORNE

IF AIRBORNE <> 0
   IF JUMPSPEED < 50
      ADD 0 TO JUMPSPEED
   ELSE
      IF JUMPSPEED > 240
	  ADD 0 TO JUMPSPEED
      ENDIF
   ENDIF
ENDIF

Agora executa o teu jogo.

Quando começar, prime a tecla “2”. Deves ver o valor JUMP: aumentar no ecrã; define o salto como 10

Agora prime a tua tecla de salto (espaço!)

Um grande salto!

Continua a saltar e repara em como os números de cada variável mudam.

Enquanto o salto do jogador sobe, JUMPSPEED aumenta a partir de 256 - FORÇA DO SALTO, por isso, se usares JUMP 10, JUMPSPEED começa em 256 - 10 = 246

Lembra-te de que é um número de 8 bits, por isso, quando chega a 255 e é incrementado outra vez, volta a 0. No contexto do nosso JUMP, quando JUMPSPEED chega a 0 o jogador atinge o ponto mais alto do salto e começa a descer. Ao descer, JUMPSPEED vai incrementar de 0 até ao valor de JUMP; quando chegar (no nosso exemplo) a 10, o jogador terá aterrado.

AIRBORNE, por outro lado, simplesmente aumenta enquanto o jogador está no ar, começando em 0 e incrementando. Quando AIRBORNE é 0 o jogador está no chão; para qualquer outro valor sabemos que está no ar. Podemos tirar partido disto com uma instrução como IF AIRBORNE <> 0 (ou seja, se o jogador não está no chão, faz algo); lembra-te de que <> significa “NÃO É”

Para mexer no JUMP, o código que te dei acima está preparado para testares o que acontece se alterarmos a velocidade a que JUMPSPEED muda:

IF AIRBORNE <> 0                ; player is in the air
   IF JUMPSPEED < 50            ; is player descending?
      ADD 0 TO JUMPSPEED        ; if so change the rate of fall
   ELSE
      IF JUMPSPEED > 240        ; is player ascending
	  ADD 0 TO JUMPSPEED    ; change the rate of ascent
      ENDIF
   ENDIF
ENDIF

Ao mudares o 0 nas partes realçadas do código, vais alterar a velocidade de subida/descida

Experimenta; isto é o que acontece quando mudamos a velocidade de descida assim:

ADD 5 TO JUMPSPEED  

Neste caso a subida é normal, mas a descida é muito mais rápida.

Repara que a rotina JUMP padrão do MPAGD é um salto ao estilo “Mario”: o jogador pode mover-se e mudar de direção no ar, não é um salto fixo do tipo “Manic Miner”.

Lembra-te: se o teu jogo envolve saltos (JUMP), garante que tens uma linha FALL no código do evento do teu jogador, ou podem nunca mais descer!

Todo o MPAGD Iniciantes