afspille DEMO
hente kildekoden
TILBAGE TIL tutorial INDEX Salg
Takket være fysikmotor, når spilleren og en fjende kolliderer fjenden vil skubbe spilleren ud af vejen. I Space Invaders spillet skal ende, når fjenden og spilleren kolliderer, så vi er nødt til at tilføje en komponent, der vil medføre både spilleren og fjenden til at eksplodere ved kontakt.
Dette er lidt anderledes til sundhedssystemet anvendte i kollision mellem en fjende og spillernes kugler.
I dette scenario kuglen vil trække nogle sundhed fra fjenden, og bør fjender sundhed nå 0 den HealthComponent vil derefter ødelægge fjendens enhed og sende en begivenhed for at lade andre komponenter ved, at virksomheden er død. På dette tidspunkt fjenden har 1 enhed af hede, og kuglerne trække 1 enhed af sundhed, så slutresultatet er, at fjender vil dø med ét skud. Men i fremtiden kan vi ønsker at tilføje fjender, der tager to eller flere skud, og takket være den HealthComponent, der kan gøres ved at ændre en XML-element.
Derimod en kollision mellem en spiller og en fjende skal altid resultere i både blive ødelagt. For at gennemføre denne en ny komponent kaldet DeathOnContactComponent er oprettet.
DeathOnContactComponent.as
public class DeathOnContactComponent udvider EntityComponent {deathCollisionTypes kollektionen rummer navnene på de enheder, der vil forårsage denne enhed til blive ødelagt, når de kolliderer med det
offentlige Var deathCollisionTypes:.Array; offentlig funktion DeathOnContactComponent () {super (); } Beskyttet overstyringsfunktionen onAdd (): void {super.onAdd (); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Beskyttet overstyringsfunktionen onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); }
I onCollision funktionen finder vi Box2DSpatialComponent af kolliderende enhed (husk at du ikke kan antage, at event.collidee eller event.
collider vil konsekvent henvise til den anden enhed), og så finder vi ud af, om den anden enheds kollision navn er et match for en af dem i den deathCollisionTypes samlingen
private funktion OnCollision (hændelse: CollisionEvent): void {var mySpatial:. Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; Var andet: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.collidRealiseringen af et Space Invaders klon med trykknap - fjendens kugler
- Opnåelse Klarhed For Team Work Med Sharepoint Web Parts
- Regulære udtryk i Perl for begyndere
- Kort Operationer i C ++
- ASP.
NET - C # - Hvordan at kode en genanvendelig CheckBoxValidator
- Hvad er Office Automation?
- Ændre og slippe Event i Mysql
- Kort Associative Container i C ++
- Papervision 3D programmering tutorials - Clipping & amp; amp; Nedslagning
- Påstande og Fejl Tal i C ++
- C Basic Syntax