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

Het maken van een 3D-spel met Ogre - Collision Detection

Object (int collisionType): collisionType (collisionType ) {COLLISIONMANAGER.AddCollisionObject (this);} CollisionObject :: ~ CollisionObject () {COLLISIONMANAGER.RemoveCollisionObject (this);}.

Het opstarten en afsluiten functies toe te voegen en te verwijderen van de lokale object uit de CollisionManager

 ongeldig CollisionObject :: Startup () {PersistentFrameListener :: Startup ();} leegte CollisionObject :: Shutdown () {PersistentFrameListener :: Shutdown ();} 

PersistentFrameListener.

h

De andere grote probleem met collision detectie is ervoor te zorgen dat er geen voorwerpen bewegen door elkaar tijdens het frame. We zullen dit aan te pakken door een maximale tijd op elk frame, dat, uitgaande van de botsende objecten niet te klein en te snel, garandeert dat twee objecten. Dit wordt gedaan in de PersistentFrameListener klasse, die nu ook een functie genaamd FrameEnded dat eens wordt genoemd per frame na FrameStarted is riep alle actieve objecten

 /* * PersistentFrameListener.h * * Auteur:. Matthew Casperson * E-mail: matthewcasperson@gmail.

com * Website: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef PERSISTENTFRAMELISTENER_H_ # definiëren PERSISTENTFRAMELISTENER_H_ # include "Ogre.h" #include "OgreEngineManager.h "#include" GameConstants.h "class PersistentFrameListener: public FrameListener {public: PersistentFrameListener (): isStarted (false) {ENGINEMANAGER.GetRoot () -> addFrameListener (dit); } Virtuele ~ PersistentFrameListener () {if (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.

GetRoot () -> removeFrameListener (dit); } Leegte Startup () {isStarted = true; } Leegte Shutdown () {isStarted = false; } Bool frameStarted (const FrameEvent & evt) {if (this-> isStarted) terug FrameStarted (GetFixedFrameEvent (EVT)); return true; } Bool frameEnded (const FrameEvent & evt) {if (this-> isStarted) terug FrameEnded (GetFixedFrameEvent (EVT)); return true; } Virtuele bool FrameStarted (const FrameEvent & evt) {return true;} virtuele bool FrameEnded (const FrameEvent & evt) {return true;} bool IsStarted () const {return isStarted;} beschermd: FrameEvent GetFixedFrameEvent (const FrameEvent & evt) {FrameEvent vastgesteld; fixed.

timeSinceLastFrame = evt.timeSinceLastFrame> MAX_FRAME_TIME? MAX_FRAME_TIME: evt.timeSinceLastFrame; vast rendement; } Bool isStarted;}. # Endif /* PERSISTENTFRAMELISTENER_H_ * /

De CollisionManager is waar alle objecten worden getest tegen elkaar voor botsingen

CollisionM

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