*   >> Lecture Éducation Articles >> science >> la programmation

Faire un clone de Space Invaders avec PushButton - Enemy Bullets

jouer à la démo

télécharger le code SOURCE

Retour à la index du tutoriel

Dans le dernier tutoriel nous avons ajouté une composant pour permettre aux entités d'être détruits sur collision. Ce court-circuité l'HealthComponent utilisé par les entités ennemies, mais maintenant nous avons bouclé la boucle et ajouter une HealthComponent au joueur afin qu'il puisse être endommagé par les balles de l'ennemi. Ici, nous ajoutons le HealthComponent, et de préciser que le jeu a une première santé de 5.


Code de

Pour le joueur à être fusillé, nous devons créer un nouveau modèle de l'entité. Cela est presque une copie exacte du modèle EnemyBullet, sauf les types de type d'entité et de collision sont modifiés pour l'identifier comme une balle tirée par un ennemi et entre en collision avec le joueur

.

Code de

EnemyControllerComponent .as

Tout comme le PlayerControllerComponent, qui crée une nouvelle entité PlayerBullet lorsque la barre d'espace a été pressé, le EnemyControllerComponent créera au hasard une nouvelle entité EnemyBullet.


La variable timeToNextShot, utilisé pour le contrôle la quantité de temps entre chaque tir possible d'une balle, est décompté à 0.

fonction publique

 override onTick (tickrate: Number): void {//... timeToNextShot - = tickrate; timeToNextShot = timeToNextShot 

Une fois timeToNextShot atteint 0 l'ennemi aura une chance de tirer une balle. Le timeToNextShot est remis à commencer le compte à nouveau vers le bas

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

Nous voulons que ces tirs pour être aléatoire, donc nous utilisons la variable chanceOfShot avec la fonction aléatoire pour déterminer si un coup de feu devrait être prise. La déclaration suivante si a un 1 dans chanceOfShot chance d'être vrai.

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

Si l'instruction if est vrai une nouvelle instance du modèle EnemyBullet est créé, positionnée et la vitesse réglée

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

lookupComponentByType (Box2DSpatialComponent) que Box2DSpatialComponent; spatial.position = new Point (position.x, Position.Y); spatial.linearVelocity = new Point (0, bulletSpeed); }}}}

Nous devons faire un petit changement à l'PlayerControllerComponent pour arrêter les balles de l'e

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lecture Éducation Articles,https://lecture.nmjjxx.com All rights reserved.