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

Realiseringen af ​​et Space Invaders klon med Trykknap - Killing af Player

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.collid

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