Minilop Retroware

Tutoriais de shoot 'em up · Parte 6 de 12

Vertical Shmup - Parte 6 - Eliminar extraterrestres

2 de agosto de 2022

As mecânicas básicas do jogo começaram a ganhar forma, por isso vamos agora tratar de eliminar os extraterrestres. Primeiro, vamos criar um sprite novo para as explosões dos inimigos, algo como isto:

Captura de ecrã do tutorialCaptura de ecrã do tutorialCaptura de ecrã do tutorialCaptura de ecrã do tutorialCaptura de ecrã do tutorial

A seguir, vamos escrever algum código para a explosão. Vou usar o Sprite Type 6 para as explosões:

EVENT SPRITETYPE6


ANIMATE 				   ; regular amination
IF FRAME = 4			   ; are we on the last frame?
   IF DIRECTION = 0	   ; was enemy hit by a torpedo?
      REMOVE			   ; yes, remove this sprite
      SUBTRACT 1 FROM S   ; decrement the sprite counter
   ENDIF
ENDIF

Isto removerá a explosão quando chegar ao último fotograma e reduzirá o número de sprites no ecrã.

Agora vamos acrescentar código de deteção de colisões ao evento do nosso sprite extraterrestre (tipo 2). Acrescenta o código abaixo no final do teu evento Sprite Type 2:

							; COLLISIONS
							; ===================
IF COLLISION 1				; if hit by a torpedo
	OTHER					; switch to the torpedo
	IF DIRECTION = 1			; is it unexploded?
		LET DIRECTION = 99	; explode the torpedo
	ENDIF
	ENDSPRITE				; return to this sprite
	LET TYPE = 6				; switch it to the explosion type
	LET IMAGE = 4				; and the explosion image
	LET FRAME = 0				; reset it to first frame
	LET DIRECTION = 0			; this is an alien exploding
ENDIF

Isto faz duas coisas quando é detetada uma colisão entre um torpedo e um extraterrestre:

1) diz ao torpedo para explodir

2) muda o extraterrestre para o tipo e imagem de explosão de extraterrestre

Vamos compilar e testar:

{insert video}

Fixe, já lhes podemos disparar!

No entanto, vejo um defeito óbvio: repara que não acontece nada quando a nossa nave espacial colide com um extraterrestre. Temos de corrigir isso para que tanto o extraterrestre como o jogador explodam.

Volta ao teu evento de extraterrestre (tipo 2) e acrescenta o código seguinte no final:

IF COLLISION 0				; if enemy and player collide
	LET TYPE = 6				; switch it to the explosion type
	LET IMAGE = 4				; and the explosion image
	LET FRAME = 0				; reset it to first frame
	LET DIRECTION = 0			; this is an alen exploding
	OTHER
	LET TYPE = 6				; switch it to the explosion type
	LET IMAGE = 4				; and the explosion image
	LET FRAME = 0				; reset it to first frame
	LET DIRECTION = 1			; this is the player exploding
	ENDSPRITE
ENDIF

Agora ambos explodirão quando as naves colidirem.

Estamos a fazer bons progressos, mas ainda há muito por fazer. No entanto, antes de avançar mais acho que temos de tomar uma decisão de jogabilidade.

SEGUINTE: Parte 7 : Uma decisão de jogabilidade

Todos os tutoriais de shoot 'em up