*   >> Lese Utdanning Artikler >> science >> programming

Å gjøre en Space Invaders-klone med taste - Enemy Bullets

spille demoen

laste ned kildekoden

TILBAKE TIL TUTORIAL INDEX

I den siste opplæringen vi lagt en komponent for å tillate enheter for å bli ødelagt på kollisjon. Dette omgås HealthComponent brukes av fiendtlige enheter, men nå kommer vi full sirkel og legge til en HealthComponent til spilleren slik at den kan bli skadet av fiendens kuler. Her legger vi HealthComponent, og angi at stykket har en initial helse 5.

Kode

For spilleren å bli skutt vi trenger for å lage en ny enhet mal.

Dette er nesten en eksakt kopi av EnemyBullet mal, unntatt enhet type og kollisjonstyper er endret for å identifisere den som en kule skutt av en fiende og kolliderer med spilleren.

Kode

EnemyControllerComponent .as

Akkurat som PlayerControllerComponent, noe som skaper en ny PlayerBullet enhet når mellomromstasten er trykket, vil EnemyControllerComponent tilfeldig opprette en ny EnemyBullet enhet.

timeToNextShot variable, som brukes til kontroll hvor lang tid mellom hver mulig avfyring av en kule, telles ned til 0.


 offentlige styringsfunksjon onTick (tickRate: Number): void {//... timeToNextShot - = tickRate; timeToNextShot = timeToNextShot 

Når timeToNextShot når 0 fienden vil ha en sjanse til å fyre av en kule. Den timeToNextShot er reset for å starte nedtellingen igjen

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

Vi ønsker disse bildene til å være tilfeldig, så vi bruker chanceOfShot variabel med tilfeldighetsfunksjon for å bestemme om et skudd bør tas. Følgende hvis setningen har en 1 i chanceOfShot sjanse for å bli sann.

 if (Math.round (Math.

random () * chanceOfShot) == 0) {

Skulle hvis setningen være sant en ny forekomst av EnemyBullet malen er opprettet, plassert og hastigheten satt

 Var bullet. IEntity = TemplateManager.instance.instantiateEntity (bulletEntityName); if (bullet = null!) {var romlig: Box2DSpatialComponent = bullet.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; spatial.position = new Point (position.x, position.y); spatial.

linearVelocity = new Point (0, bulletSpeed); }}}}

Vi har å gjøre en liten endring i PlayerControllerComponent å stoppe fiendens kuler banket spilleren utenfor skjermen. Når to objekter kolliderer i et fysikksystem de ikke bare stoppe døde - med mindre de kolliderer hodet på med like stor kraft man vil alltid støte den andre inn i en ny stilling, som to bilja

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.