CollisionObject.cpp
#include "CollisionObject.h" #include "CollisionManager.h" CollisionObject :: CollisionObject (int collisionType): collisionType (collisionType ) {COLLISIONMANAGER.AddCollisionObject (this);} CollisionObject :: ~ CollisionObject () {COLLISIONMANAGER.RemoveCollisionObject (this);}.
Les fonctions démarrage et d'arrêt ajouter et de supprimer l'objet local de la CollisionManager
annuler CollisionObject :: démarrage () {PersistentFrameListener :: démarrage ();} CollisionObject :: shutdown () {PersistentFrameListener :: shutdown ();} videPersistentFrameListener.h
L'autre gros problème avec la collision détection fait que les objets ne se déplacent pas à travers l'autre pendant la trame.
Nous allons résoudre ce problème en fixant un maximum de temps sur chaque cadre, qui, en supposant que les objets en collision ne sont pas trop petites et trop vite, fera en sorte que les deux objets. Cela se fait dans la classe PersistentFrameListener, qui inclut désormais aussi une fonction appelée FrameEnded qui est appelé une fois par trame après frameStarted a été appelée sur tous les objets actifs
/* * * * PersistentFrameListener.h Auteur:. Matthew Casperson * Email: [email protected] * Site Web: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef PERSISTENTFRAMELISTENER_H_ # définir PERSISTENTFRAMELISTENER_H_ # comprennent #include "Ogre.h" "OgreEngineManager.h "#include" GameConstants.h «classe PersistentFrameListener: FrameListener {public: PersistentFrameListener (): isStarted (false) {ENGINEMANAGER.GetRoot () -> addFrameListener (this); } ~ Virtuelle PersistentFrameListener () {if (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.
GetRoot () -> removeFrameListener (this); } Vide démarrage () {isStarted = true; } Void shutdown () {isStarted = false; } Bool frameStarted (const FrameEvent & EVT) {if (this-> isStarted) retourner frameStarted (GetFixedFrameEvent (EVT)); return true; } Bool frameEnded (const FrameEvent & EVT) {if (this-> isStarted) retourner FrameEnded (GetFixedFrameEvent (EVT)); return true; } Virtuelle bool frameStarted (const FrameEvent & EVT) {return true;} FrameEnded bool virtuel (const FrameEvent & EVT) {return true;} bool isStarted () const {return isStarted;} protégée: FrameEvent GetFixedFrameEvent (const FrameEvent & EVT) {FrameEvent fixe; fixed.
timeSinceLastFrame = evt.timeSinceLastFrame> MAX_FRAME_TIME? MAX_FRAME_TIME: evt.timeSinceLastFrame;
Premiers pas avec Activeperl
- Fenêtres Bar
- Comment est-il difficile d'apprendre la programmation?
- Comment configurer votre réseau Windows Vista connections
- Contrats de coût cible - Programmation Agile Methodology
- Dernières tendances de programmation entre developers
- Apprendre à connaître Windows
- Importance de l'assurance qualité de jeux pour la marque Value
- Mysql Scheduler
- JSON File
- Création d'un jeu de plateforme flash avec Flixel et Flex - Enemies
Construire votre première appl…