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 {owner.destroy (); }
De DestroyIfOffScreenComponent component controleert de positie van de entiteit elk frame en verwijdert de entiteit waartoe zij behoort uit het spel als het op het scherm is verhuisd uit.
openbare klasse DestroyIfOffScreenComponent breidt TickedComponent {[TypeHint (type = "flash.geom.Point")] public var positionReference: PropertyReference; public var screenWidth: int = 480; public var screenHeight: int = 384; public var sideBuffer: int = 32; publieke functie DestroyIfOffScreenComponent () {super (); } Public override functie onTick (tickrate: Number): void {super.onTick (tickrate); var positie: Point = owner.getProperty (positionReference); if (positie == null) return; if (position.x> screenWidth + sideBuffer || position.x screenHeight + sideBuffer || position.y
De PlayerControllerComponent onTick functie is gewijzigd om het aan de kogels te vuren. Eerst tellen we naar een timer genaamd timeToNextShot dat is opgehoogd elke keer een kogel wordt afgevuurd
openbare override functie onTick (tickrate: Number):. leegte {//...timeToNextShot - = tickrate; timeToNextShot = timeToNextShot
Als de spatiebalk is ingedrukt en de timeToNextShot gelijk is aan nul we reset de timeToNextShot teller en een nieuw exemplaar van de PlayerBullet template. De kogels positie en snelheid zijn zo ingesteld dat het op het scherm naar de spelers positie verschijnt.
if (InputManager.isKeyDown ( InputKey.SPACE) && timeToNextShot == 0) {timeToNextShot = timeBetweenShots; var kogel: IEntity = TemplateManager.instance.instantiateEntity (bulletEntityName); if (kogel = null) {var ruimtelijke: Box2DSpatialComponent = bullet.lookupComponentByType (Box2DSpatialComponent) als Box2DSpatialComponent ; spatial.position = new Point (position.x, position.y); spatial.linearVelocity = new Point (0, speed); }} //...}
Als u de vorige les serie kunt u zich herinneren dat
Het maken van een Space Invaders kloon met PushButton - Explosions
- Denken Cookies
- AS3IsoLib Tutorial Series - Verhuizen Boxes
- Pakketten en Reflexive Relationships
- Eclipse IDE voor Java Programmers
- Terugkerende Verwijzingen in Php
- Hoe je het MAC-adres van onze machine met behulp van VB .net krijgen?
- Principes van een eenvoudige C ++ Sequence Container
- Identificerende gegevens Items En Entities
- Sommige functies van C ++ Entities
- Papervision 3D Programming Tutorial - Eenvoudige LOD