*   >> Lezen Onderwijs artikelen >> science >> programming

Het maken van een Space Invaders kloon met PushButton - Enemy Bullets

SPEEL DE DEMO

Download de broncode

Terug naar de tutorial INDEX

In de laatste les toegevoegd we een component om entiteiten vernietigd botsing. Dit omzeild de HealthComponent gebruikt door de vijandelijke eenheden, maar nu komen we volledige cirkel en voeg een HealthComponent aan de speler, zodat het kan worden beschadigd door kogels vijand. Hier voegen we de HealthComponent, en aangeven dat het spel heeft een initiële gezondheid van de 5.

Code

Voor de speler te worden doodgeschoten we nodig hebben om een ​​nieuwe entiteit sjabloon.

Dit is bijna een exacte kopie van de EnemyBullet sjabloon, met uitzondering van het type entiteit en botsing types worden veranderd om het te identificeren als een kogel geschoten door een vijand en botsen met de speler.

Code

EnemyControllerComponent .as

Net als de PlayerControllerComponent, die een nieuwe PlayerBullet entiteit wanneer de spatiebalk is ingedrukt creëert, de EnemyControllerComponent zal willekeurig een nieuw EnemyBullet entiteit te maken.

De timeToNextShot variabele gebruikt om de controle de hoeveelheid tijd tussen elke mogelijke afvuren van een kogel, wordt afgeteld naar 0.

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

Zodra timeToNextShot 0 bereikt zal de vijand een kans om een ​​kogel brand te hebben. De timeToNextShot wordt teruggezet op de telling weer naar beneden beginnen

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

Wij willen dat deze schoten om willekeurig zijn, dus gebruiken we de chanceOfShot variabele met de random-functie te bepalen of een schot moet worden genomen. De volgende if statement heeft een 1 op chanceOfShot kans trouw.

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

Als de if waar is een nieuwe exemplaar van de EnemyBullet sjabloon wordt gemaakt, geplaatst en de snelheid instellen

 var kogel. IEntity = TemplateManager.instance.instantiateEntity (bulletEntityName); if (kogel = null!) {var ruimtelijke: Box2DSpatialComponent = bullet.

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

We moeten een kleine wijziging in de PlayerControllerComponent maken naar de vijandelijke kogels kloppen de speler uit het scherm te stoppen. Als twee objecten botsen in een phy

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.