afspille DEMO
hente kildekoden
TILBAGE TIL tutorial INDEX
Ødelægge en fjende som reaktion på en kollision med en spillere kugle kan lyde enkelt nok, men der er en del arbejde, der skal gøres i baggrunden til at styre sundheden for fjenden, formindske, at sundhed som reaktion på en kollision med en kugle, og endelig at vise en eksplosion når fjenden er død.
eksplosion, ligesom alle andre animerede Sprite, er defineret i XML-filer.
Ligesom kuglerne den eksisterer som en skabelon, men er ikke tilføjet til nogen grupper, så det er ikke indlæst, når niveauet er indlæst. Fordi eksplosionen ikke vil deltage i sammenstød afsløring eller flyttes rundt på skærmen er der ikke meget behov for at simulere det med Box2D fysik motor. Så den rumlige komponent vil være en SimpleSpatialComponent, i modsætning til Box2DSpatialComponent bruges til fjender, afspiller og kugler. Bortset fra, at de samme rendering og animation komponenter tilsættes til eksplosionen enhed.
Kode
Desuden er tilføjet en ny komponent kaldet DestroyAfterCountdownComponent. Formålet med denne komponent er at ødelægge en enhed efter en vis periode. I dette tilfælde ønsker vi at ødelægge eksplosionen enhed, når animationen er færdig.
Kode
Trykknap kommer med en handy komponent kaldet HealthComponent, som kan bruges til at bevare sundheden for en enhed, årsag skader til en enhed ved at mindske de sundhedsmæssige, og ødelægge den enhed, når alle dens helbred er væk.
Denne komponent er tilføjet til fjenden skabelonen, og vi satte den indledende sundhed fjenden til 1 (det som standard til 100).
Kode
Når sundhed forvaltes af HealthComponent reduceres til nul enheden er ødelagt som standard, men det afsender også en begivenhed for at lade andre komponenter ved, at virksomheden er død. Den DeathHandlerComponent bruges til at holde øje med denne begivenhed og tilføje en ny forekomst af eksplosionen enhed.
Kode
DamageOnContactConponent, som blev introduceret i sidste tutorial, er blevet ændret for at finde den sundhed komponent af enhed, der har kolliderede med og kalde sin skade-funktion, hvilket vil reducere sundhed anden enhed og i sidste ende ødelægge det. Det CollisionEvent der videregives til kollisionen begivenhed lytteren funktion har referencer til to Box2DSpatialComponent kaldte collidee og Collider.
Du kan ikke gå ud fra den ene eller den anden tilhører den samme enhed som DamageOnContactCo