*   >> Læs Uddannelse artikler >> science >> programming

Realiseringen af ​​et Space Invaders klon med trykknap - fjendens kugler

afspille DEMO

hente kildekoden

TILBAGE TIL tutorial INDEX

I den sidste tutorial vi tilføjet en komponent for at tillade enheder at blive destrueret på kollision. Dette omgået den HealthComponent bruges af fjendtlige enheder, men nu kommer vi fuld cirkel og tilføje en HealthComponent til afspilleren, så det kan blive beskadiget af fjendens kugler. Her tilføjer vi den HealthComponent, og angive, at stykket har en indledende sundhed 5.

Kode

For spilleren at blive skudt vi nødt til at oprette en ny enhed skabelon.

Det er næsten en nøjagtig kopi af den EnemyBullet skabelonen, undtagen enhed type og kollision typer ændres for at identificere den som en kugle skud fra en fjende og kolliderer med afspilleren.

Kode

EnemyControllerComponent .as

Ligesom PlayerControllerComponent, som skaber en ny PlayerBullet enhed, når der er trykket på mellemrumstasten, vil EnemyControllerComponent tilfældigt oprette en ny EnemyBullet enhed.

timeToNextShot variabel bruges til at styre mængden af ​​tid i mellem hver mulig affyring af en kugle, tælles ned til 0.


 offentlige override funktion onTick (Tickrate: Number): void {//... timeToNextShot - = Tickrate; timeToNextShot = timeToNextShot 

Når timeToNextShot når 0 fjenden vil have en chance for at affyre en kugle. Den timeToNextShot nulstilles for at starte nedtællingen igen

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

Vi ønsker, at disse optagelser til at være tilfældig, så vi bruger chanceOfShot variabel med den tilfældige funktion at afgøre, om et skud bør tages. Følgende, hvis udsagn har en 1 i chanceOfShot chance for at være sande.


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

Skulle hvis udsagn er sandt en ny instans af EnemyBullet skabelonen er oprettet, placeret og hastigheden sat

 Var bullet:. IEntity = TemplateManager.instance.instantiateEntity (bulletEntityName); hvis (= null kugle!) {var rumlig: Box2DSpatialComponent = bullet.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; spatial.position = nye punkt (position.x, position.y); spatial.

linearVelocity = nye punkt (0, bulletSpeed); }}}}

Vi er nødt til at lave en lille ændring af PlayerControllerComponent at stoppe fjendens kugler banker afspilleren væk fra skærmen. Når to objekter kolliderer i en fysik-system, de ikke bare stoppe død - med mindre de kolliderer hoved på med lige kraft

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.