*   >> Lese Utdanning Artikler >> science >> programming

Å gjøre en 3D-spill med Ogre - Collision Detection

onObject (denne);} CollisionObject :: ~ CollisionObject () {COLLISIONMANAGER.RemoveCollisionObject (denne);}.

oppstart og avslutning funksjoner legge til og fjerne den lokale objektet fra CollisionManager

 ugyldig CollisionObject :: Startup () {PersistentFrameListener :: Startup ();} void CollisionObject :: Shutdown () {PersistentFrameListener :: Shutdown ();} 

PersistentFrameListener.h

Det andre store problemet med kollisjon deteksjon er å sørge for at objekter ikke bevege seg gjennom hverandre under rammen.

Vi vil løse dette ved å sette en maksimal tid på hvert bilde, som, forutsatt at de kolliderende objektene er ikke for lite og går for fort, vil sikre at to stedene. Dette gjøres i PersistentFrameListener klassen, som nå også inkluderer en funksjon kalt FrameEnded som kalles en gang per ramme etter FrameStarted har blitt kalt på alle de aktive objektene

 /* * PersistentFrameListener.h * * Forfatter:. Matthew Casperson * E-post: [email protected] * Nettside: https://www.brighthub.com/hubfolio/matthew-casperson.

aspx * /# ifndef PERSISTENTFRAMELISTENER_H_ # definere PERSISTENTFRAMELISTENER_H_ # include "Ogre.h" #include "OgreEngineManager.h "# include" GameConstants.h "class PersistentFrameListener: public FrameListener {public: PersistentFrameListener (): isStarted (false) {ENGINEMANAGER.GetRoot () -> addFrameListener (denne); } Virtuell ~ PersistentFrameListener () {if (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.

GetRoot () -> removeFrameListener (denne); } Void Startup () {isStarted = true; } Void Shutdown () {isStarted = false; } Bool frameStarted (konst FrameEvent & evt) {if (this-> isStarted) tilbake FrameStarted (GetFixedFrameEvent (evt)); return true; } Bool frameEnded (konst FrameEvent & evt) {if (this-> isStarted) tilbake FrameEnded (GetFixedFrameEvent (evt)); return true; } Virtuell bool FrameStarted (konst FrameEvent & evt) {return true;} virtuell bool FrameEnded (konst FrameEvent & evt) {return true;} bool IsStarted () const {return isStarted;} beskyttet: FrameEvent GetFixedFrameEvent (konst FrameEvent & evt) {FrameEvent fast; fixed.

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

CollisionManager er der alle objektene er testet mot hverandre for kollisjoner

CollisionManager.h

 /* * CollisionManager.h * * Forfatter: Matthew Casperson * E-post: 

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.