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

PushButton Tutorial Series - Tracking & amp; amp; Jumping

.addEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); owner.eventDispatcher.addEventListener (CollisionEvent.COLLISION_STOPPED_EVENT, OnCollisionEnd);} beschermde override functie onRemove (): void {super.onRemove (); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_EVENT, OnCollision); owner.eventDispatcher.removeEventListener (CollisionEvent.COLLISION_STOPPED_EVENT, OnCollisionEnd).

}

De OnCollision functie wordt geactiveerd wanneer de eigenaar van het keyboardcontroller component (de speler entiteit in ons geval) is betrokken geweest bij een aanrijding

 prive-functie OnCollision (event: CollisionEvent): void {

Wij zorgen ervoor dat de botsing met een "Platform". In de toekomst kan de speler ook botsen met vijanden, kogels, power-ups etc, maar geen van deze botsingen aan de keyboardcontroller relevant zijn.

 if (ObjectTypeManager.instance.doesTypeOverlap (event.collidee.

collisionType, "Platform") ) {

Dan controleren we om te zien of de botsing normaal, wat je maar kunt bedenken als een lijn wijzen loodrecht op het platform, heeft ay component van ten minste 0,7. Dit geeft aan dat het platform is niet te steil om op te staan.

 if (event.normal.y> 0,7) 

Als het niet te steil, verhogen we de onGround variabele aan te geven dat de speler die op een platform

 onGround ++.

; }}

De OnCollisionEnd functie doet het omgekeerde, verlagen van de onGround variabele als de speler niet meer botsen met een platform

 privéaangelegenheid OnCollisionEnd (event: CollisionEvent). void {if (ObjectTypeManager.instance. doesTypeOverlap (event.collidee.collisionType, "Platform")) {if (event.normal.y> 0,7) onGround--; }} 

De onGround variabele geeft nu de vraag of de speler staat op de grond. In de onTick functie controleren we of de sprong toets wordt ingedrukt onGround groter dan nul.

Als dat zo is de spelers verticale snelheid aangepast om het te laten springen

 openbare override functie onTick (tickrate: Number):. Leegte {//... als (InputManager.isKeyDown (InputKey.UP) && onGround> 0) {velocity.y = -JumpSpeed; } //...}
Page   <<  [1] [2] 
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.