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

Å gjøre en Space Invaders-klone med taste - Killing Player

spille demoen

laste ned kildekoden

TILBAKE TIL TUTORIAL INDEX

Takk til fysikkmotor når spilleren og en fiende kolliderer fienden vil presse spilleren ut av veien. I Space Invaders spillet skulle ende når fienden og spilleren kolliderer, så vi må legge til en komponent som vil føre til både spilleren og fienden til å eksplodere ved kontakt.

Dette er litt annerledes enn helsesystemet brukes i kollisjonen mellom en fiende og spillernes kuler.

I dette scenariet kulen vil trekke noen helse fra fienden, og bør fiender helse nå 0 er HealthComponent vil da ødelegge fiendens enhet og sende en begivenhet for å la andre komponenter vet at foretaket har dødd. På dette punktet fienden har en enhet av lynghei, og kulene trekke en enhet for helse, så sluttresultatet er at fiendene vil dø med ett skudd. Men i fremtiden kan vi ønsker å legge til fiender som tar to eller flere skudd, og takk til HealthComponent som kan gjøres ved å endre én XML element.


I motsetning en kollisjon mellom en spiller og en fiende bør alltid resultere både å bli ødelagt. For å gjennomføre dette en ny komponent kalt DeathOnContactComponent er opprettet.

DeathOnContactComponent.as

 public class DeathOnContactComponent strekker EntityComponent {

deathCollisionTypes Samlingen inneholder navnene på de enhetene som vil føre dette foretaket bli ødelagt når de kolliderer med det

 offentlige Var deathCollisionTypes. Array; offentlig funksjon DeathOnContactComponent () {super (); } Beskyttet Styringsfunksjonen onAdd (): void {super.

onAdd (); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Beskyttet Styringsfunksjonen onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); }

I onCollision funksjonen finner vi Box2DSpatialComponent av de kolliderende enhet (husk at du ikke kan anta at event.collidee eller event.

collider vil konsekvent referere til annen enhet), og deretter finner vi ut om den andre enhetens kollisjon navn er en kamp for en av de i deathCollisionTypes samlingen

 privat funksjon OnCollision (event: CollisionEvent): void {var mySpatial. Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; Var andre: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.

collidee; for hver (var collisionType: String i deathCollisionTypes

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