Parte 12: Destruyendo la Nave Enemiga

Ahora vamos a usar esas balas!. Queremos darle al enemigo puntos de salud para poder quitárselos a golpes de bala, y destruirlo cuando esté demasiado dañado.

Paso 83: Estando aún en los eventos de Bullet en el evento de colisión que habíamos creado Actor – Type Vamos a usar la misma colisión para decirle a la Nave Enemiga que fue golpeada por una bala.

De la paleta, buscamos el bloque Trigger Event [text] in all behaviors for [Actor] (dentro de Behavior > Triggers) y lo soltamos por encima del bloque Kill Self (queremos que se ejecute antes).

Escribe “Hit” dentro de la caja de texto, coge el bloque azul Actor Of Type que hay en la instrucción When Self hits a Enemy ship … y suéltalo encima de la lista Self de forma que quede como se ve a continuación:

p2.12.1

p2.12.2

Paso 84: Cambia al actor Enemy Ship y accede a su pestaña Events. Click Add Event y elige Advanced > Custom Event.

p2.12.3

Paso 85: El event aparecerá, en la caja de texto escribe “Hit”. Esto hará que el bloque que añadimos a bullet dispare cualquier código que aquí insertemos.

Selección_306

Ahora, si el enemigo recibe un disparo y va a ser destruido se ejecutará un bloque kill self (que pondremos más adelante) . Además queremos que la nave enemiga pueda recibir varios disparos. Para que esto se pueda hacer, necesitaremos almacenar su “salud” (Health ) en una variable.

Paso 86: Creamos un nuevo atributo, elige el tipo Number, y llámalo Health Points (click sobre el botón Attributes de la paleta, después botón Create an Attribute).

p2.12.4

p2.12.5

Paso 87: Añade otro evento a la nave enemiga. Crea un evento When Creating (click + Add Event, Basics > When Creating).

Paso 88: Ponemos el valor inicial de la variable Health Points. Click sobre Attributes -> Setters en la paleta y arrastra y suelta el bloque Set Health Points to [ ] dentro del evento creado When Created, escribe 3 dentro de la caja de texto.

p2.12.6

Paso 89: Ahora cada enemigo tendrá 3 puntos de salud (health) cuando se creen, y vamos a restarles 1 cuando una bala les golpee.

Regresa al Custom Event de la nave enemiga, y usa el bloque Increment Number By [ ] (está en Numbers & Text > Math ) ponlo dentro del custom event. Cambia el campo “increment” a “decrement“, y elige “Health Points” en el campo numérico (si no lo estaba ya). Por último, en el campo vacío pon “1”.

Paso 90: Necesitamos añadir un evento que compruebe la cantidad de puntos de salud que le quedan a la nave y que la destruya si llegó a 0 (o menos en caso de que le hayamos golpeado demasiado rápido).

Para empezar, click el botón + Add Event, Basics > When Updating. Después, arrastra in bloque if block dentro del bloque Always (en Flow -> Conditions de la paleta).

p2.12.7

Paso 91: Añadimos un bloque “Less Than Or Equal To” ( Flow -> Conditions, contiene “<=” entre dos números) al campo vacío del bloque if y comprobaremos si Health Points (que está en Attributes > Getters) es menor o igual que 0.

Paso 92: Aquí es donde ponemos el bloque Kill Self (Actor > Properties).

p2.12.8

Ahora nuestra nave enemiga será muerta si ha sido golpeada por 3 balas o mas!. Ahora vamos a hacer que la nave no solo desaparezca y punto.

Paso 92: Queremos usar un sonido de Explosion que abremos añadido antes. Si añadimos un bloque [Play] [Sound] (Sound & Images > Sound) y elegimos nuestro efecto sonoro Explosion de la lista desplegable, ese sonido sonará cuando nuestro Actor sea eliminado de la pantalla.

p2.12.9

Paso 93: Necesitamos añadir un efecto a nuestro Actor Type Enemy Ship para que el jugador pueda decir cuando ha sido golpeado. Regresa a el evento Custom Event. Vamos a usar el bloque bajo Actor -> Effects de la paleta

Para los efectos, usa estos 3 bloques:

  • Apply Effect [ ] to [Actor]
  • Make Negative
  • Remove All Effects From [Actor]

También necesitamos un bloque tiempo Do After (Flow > Time en la paleta).

p2.12.10

Pon el bloque Make Negative dentro del espacio en blanco del bloque Apply Effect. Pon justo debajo el bloque Do After escribe dentro de la caja de texto “.1”. Por último, pon el bloque remove all effects dentro del block timer do after ….

p2.12.11

Con todo esto ya puedes probar el juego.

Continuar en la parte 13.