*   >> läser Utbildning artiklar >> science >> programming

Att göra en Space Invaders klon med tryckknapp - Enemy Bullets

spela demo Omdömen

ladda ner källkoden Omdömen

TILLBAKA TILL Handledningen INDEX Omdömen

I den sista handledningen har vi lagt en komponent för att tillåta enheter att förstöras på kollision. Detta kringgås HealthComponent används av fiendens enheter, men nu kommer vi full cirkel och lägg en HealthComponent till spelaren så att den kan skadas av fiendens kulor. Här lägger vi HealthComponent, och ange att spelet har en initial hälsa 5. Omdömen

Kod Omdömen

För spelaren att skjutas vi behöver för att skapa en ny enhet mall.

Detta är nästan en exakt kopia av EnemyBullet mallen, utom enhet typ och kollisionstyper ändras för att identifiera det som en kula skjuten av en fiende och kollidera med spelaren. Omdömen

Kod Omdömen

EnemyControllerComponent .as

Precis som PlayerControllerComponent, vilket skapar en ny PlayerBullet enhet när mellanslagstangenten har tryckts, den EnemyControllerComponent kommer slumpmässigt att skapa en ny EnemyBullet enhet. Omdömen

timeToNextShot variabel, som används för att styra hur lång tid mellan varje möjlig avfyrning av en kula, räknas ned till 0.

Omdömen

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

När timeToNextShot når 0 fienden kommer att ha en chans att skjuta en kula. Den timeToNextShot återställs för att starta nedräkningen igen Omdömen

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

Vi vill att dessa skott för att vara slumpmässigt, så vi använder chanceOfShot variabel med slumpfunktion för att avgöra om ett skott bör vidtas. Följande if har en 1 i chanceOfShot chans att vara sant. Omdömen

 if (Math.round (Math.

random () * chanceOfShot) == 0) {

Om if vara sant en ny instans av EnemyBullet mallen skapas, positioneras och hastigheten inställd Omdömen

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

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

Vi måste göra en liten förändring till PlayerControllerComponent att stoppa fiendens kulor knackar spelaren utanför skärmen. När två objekt kolliderar i en fysik system som de inte bara stoppa död - om de kolliderar huvudet på med samma kraft kommer alltid stöta den andra t

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.