*   >> läser Utbildning artiklar >> science >> programming

Att göra en 3D-spel med Ogre - Collision Detection

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

start och avstängning funktioner lägga till och ta bort lokalt objekt från CollisionManager Omdömen

 void CollisionObject :: Startup () {PersistentFrameListener :: Startup ();} void CollisionObject :: avstängning () {PersistentFrameListener :: avstängning ();} 

PersistentFrameListener.

h Omdömen

Den andra stora frågan med kollisions upptäckt är att se föremål inte rör sig genom varandra under ramen. Vi kommer att behandla detta genom att ställa in en maximal tid på varje bildruta, vilket, vid de kolliderande föremålen inte är alltför små och rör sig för fort, kommer att se till att två objekt. Detta görs i PersistentFrameListener klassen, som nu även en funktion som kallas FrameEnded som kallas en gång per bildruta efter FrameStarted har uppmanat alla aktiva objekt Omdömen

 /* * PersistentFrameListener.h * * Författare.

: Matthew Casperson * E-post: [email protected] * Hemsida: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef PERSISTENTFRAMELISTENER_H_ # definiera PERSISTENTFRAMELISTENER_H_ # include "Ogre.h" #include "OgreEngineManager.h "#include" GameConstants.h "klass PersistentFrameListener: public FrameListener {public: PersistentFrameListener (): isStarted (falskt) {ENGINEMANAGER.GetRoot () -> addFrameListener (this); } Virtuella ~ PersistentFrameListener () {if (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.

GetRoot () -> removeFrameListener (this); } Void start () {isStarted = true; } Void avstängning () {isStarted = false; } Bool frameStarted (const FrameEvent & evt) {if (this-> isStarted) åter FrameStarted (GetFixedFrameEvent (evt)); return true; } Bool frameEnded (const FrameEvent & evt) {if (this-> isStarted) åter FrameEnded (GetFixedFrameEvent (evt)); return true; } Virtuella bool FrameStarted (const FrameEvent & evt) {return true;} virtuella bool FrameEnded (const FrameEvent & evt) {return true;} bool IsStarted () const {return isStarted;} skyddas: FrameEvent GetFixedFrameEvent (const FrameEvent & evt) {FrameEvent fast; fixed.

timeSinceLastFrame = evt.timeSinceLastFrame> MAX_FRAME_TIME? MAX_FRAME_TIME: evt.timeSinceLastFrame; återvända fast; } Bool isStarted;},. # Endif /* PERSISTENTFRAMELISTENER_H_ * /

CollisionManager är där alla föremålen testas mot varandra för kollisioner Omdömen

CollisionMa

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.