*   >> Lezen Onderwijs artikelen >> science >> programming

Het maken van een Space Invaders kloon met PushButton - Explosions

eeft verwijzingen naar twee Box2DSpatialComponent genaamd collidee en versneller. U kunt er niet van uitgaan ene of de andere behoort tot dezelfde entiteit als de DamageOnContactConponent, zodat beide moeten worden gecontroleerd om de Box2DSpatialComponent die behoort tot de andere entiteit die bij de botsing te vinden.

 openbare klasse DamageOnContactConponent breidt EntityComponent {public var schade: int = 0; publieke functie DamageOnContactConponent () {super (); } Beschermde override functie onAdd (): void {super.onAdd (); owner.eventDispatcher.

addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Beschermde override functie onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); } Prive-functie OnCollision (event: CollisionEvent): void {var mySpatial: Box2DSpatialComponent = owner.lookupComponentByType (Box2DSpatialComponent) als Box2DSpatialComponent; var andere: Box2DSpatialComponent = event.collidee === mySpatial event.collider:? event.collidee; var otherHealth: HealthComponent = other.owner.

lookupComponentByType (HealthComponent) als HealthComponent; if (otherHealth = null!) otherHealth.damage (schade); owner.destroy (); }}

De nieuwe DeathHandlerComponent component stelt de onDied functie bij een HealthComponent.DIED gebeurtenis te noemen. Binnen de onDied een nieuw exemplaar van de Explosion sjabloon wordt gemaakt en geplaatst. Merk op dat we proberen trek telkens zowel een Box2DSpatialComponent en SimpleSpatialComponent component om de beginpositie van de explosie te stellen.

Natuurlijk weten we dat de explosie entiteit bevat een SimpleSpatialComponent (want dat is wat we de game in het XML-bestand), maar ik liet deze code in op een van de problemen met de PushButton component ontwerp-systeem, dat is dat componenten die presteren markeren dezelfde functie zijn vaak los van elkaar.

In dit geval, zowel de Box2DSpatialComponent en SimpleSpatialComponent bieden een manier om een ​​entiteit in de ruimte te plaatsen, wordt de actuele positie variabele niet opgegeven als onderdeel van een gemeenschappelijke interface of basisklasse, dwingen ons om te controleren op de aanwezigheid van beide componenten wanneer het proberen om de gestelde uitgangspositie

 openbare klasse DeathHandlerComponent breidt EntityComponent {public var PositionReference.

PropertyReference = null; publieke functie DeathHandlerComponent () {super (); } Beschermde override fu

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.