*   >> Lectura Educación Artículos >> science >> programación

Hacer un clon de Space Invaders con PushButton - Enemigo Bullets

JUGAR LA DEMO

DESCARGAR EL CÓDIGO FUENTE

VOLVER A EL INDICE TUTORIAL

En el último tutorial hemos añadido un componente para permitir que las entidades a ser destruidos en caso de colisión. Esto pasa por alto la HealthComponent utilizado por las entidades enemigas, pero ahora llegamos al punto de partida y añadir un HealthComponent al jugador para que pueda ser dañado por las balas enemigas. Aquí añadimos el HealthComponent, y especificar que el juego tiene una salud inicial de 5.


Código

Para el jugador que se rodará tenemos que crear una nueva plantilla de entidad. Esto es casi una copia exacta de la plantilla EnemyBullet, excepto los tipo tipos entidad y de colisión se cambian para identificarlo como una bala disparada por un enemigo y chocar con el jugador

.

Código

EnemyControllerComponent .as

Al igual que el PlayerControllerComponent, lo que crea una nueva entidad PlayerBullet cuando la barra de espacio ha sido presionado, el EnemyControllerComponent creará aleatoriamente una nueva entidad EnemyBullet.


La variable timeToNextShot, utilizado para el control la cantidad de tiempo entre cada posible disparo de una bala, se cuenta a 0.

 función de anulación pública onTick (tickrate: Number): void {//... timeToNextShot - = tickrate; timeToNextShot = timeToNextShot 

Una vez timeToNextShot llega a 0 el enemigo tendrá la oportunidad de disparar una bala. El timeToNextShot se restablece para iniciar la cuenta atrás de nuevo

 si (timeToNextShot == 0) {timeToNextShot = timeBetweenShots;.

Queremos que estas vacunas sean al azar, por lo que utilizamos la variable chanceOfShot con la función aleatoria para determinar si se debe tomar un tiro. La siguiente sentencia if tiene un 1 en chanceOfShot oportunidad de ser cierto.

 si (Math.round (Math.random () * chanceOfShot) == 0) {

En caso de que la sentencia if ser verdad una nueva se crea instancia de la plantilla EnemyBullet, coloca y ajusta la velocidad

 bala var:. IEntity = TemplateManager.instance.instantiateEntity (bulletEntityName); si (bala! = null) {var espacial: Box2DSpatialComponent = bullet.

lookupComponentByType (Box2DSpatialComponent) como Box2DSpatialComponent; spatial.position = new Point (position.x, position.y); spatial.linearVelocity = new Point (0, bulletSpeed); }}}}

Tenemos que hacer un pequeño cambio en el PlayerControllerComponent para detener las balas enemigas g

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.