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

Att göra en Space Invaders klon med tryckknapp - Killing Player

spela demo Omdömen

ladda ner källkoden Omdömen

TILLBAKA TILL Handledningen INDEX

Tack vare fysikmotorn när spelaren och en fiende kolliderar fienden kommer att driva spelaren ur vägen. I Space Invaders bör spelet slut när fienden och spelaren kolliderar, så vi behöver lägga till en komponent som kommer att orsaka både spelaren och fienden att explodera vid kontakt. Omdömen

Det här är något annorlunda till hälsovårdssystemet används i kollisionen mellan en fiende och spelarnas kulor.

I det scenariot kulan kommer dra några hälsa från fienden, och bör fiender hälsa når 0 i HealthComponent kommer då att förstöra fiendens enheter och skicka en händelse att låta andra komponenter vet att företaget har dött. Vid denna punkt fienden har en enhet av heden, och kulorna subtrahera en enhet för hälsa, så slutresultatet är att fiender kommer att dö med ett skott. Men i framtiden kan vi vill lägga till fiender som tar två eller flera skott, och tack vare HealthComponent som kan göras genom att ändra en XML-element.

Omdömen

I motsats en kollision mellan en spelare och en fiende bör alltid resultera i båda förstörs. För att genomföra detta en ny komponent som kallas DeathOnContactComponent skapas. Omdömen

DeathOnContactComponent.as Omdömen

 public class DeathOnContactComponent utökar EntityComponent {

deathCollisionTypes samlingen innehåller namnen på de enheter som kommer att orsaka denna enhet till förstöras när de kolliderar med det

 public var deathCollisionTypes. Array; public function DeathOnContactComponent () {super (); } Skyddade override funktion onAdd (): void {super.

onAdd (); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Skyddade override funktion onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); }

I onCollision funktionen finner vi Box2DSpatialComponent av kolliderande enhet (kom ihåg att du inte kan anta att event.collidee eller event.

collider kommer alltid hänvisa till en annan enhet) och sedan finner vi reda på om den andra enhetens kollisions namn är en match för en av dem i deathCollisionTypes samlingen Omdömen

 private function OnCollision (event: CollisionEvent): void {var mySpatial. Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) som Box2DSpatialComponent; var andra: Box2DSpatialComponent = event.collidee === mySpatial event.collider: event.colli

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