*   >> Lectura Educación Artículos >> science >> programación

Hacer un juego en 3D con Ogre - Colisión Detection

Collision (objeto1); }}}} Return true;}

Las clases como jugador, con armas y enemigo que se extendía la clase PersistentFrameListener ahora extender la clase CollisionObject. A continuación se puede ver cómo la clase Enemigo implementa la función de colisión.

 vacío Enemigo :: Collision (CollisionObject * otra) {if (otro-> GetCollisionType () == PLAYER_WEAPON_CT) {* Arma arma = static_cast (otra ); this-> escudos - = arma-> GetDamage (); si (this-> escudos GetCollisionType () == PLAYER_CT) {Apagar (); }} 

La clase BasicEnemy implementa la función GetBoundingSphere utilizando el construido en función getWorldBoundingSphere que está disponible en todas las MovableObjects Ogre (esencialmente todos los objetos visuales Ogre).


 Esfera BasicEnemy :: GetBoundingSphere () {return this- > Mesh-> getWorldBoundingSphere ();} 

Los cambios para el arma, la bala y las clases del jugador son similares. Usted puede tomar un vistazo al código fuente para ver los cambios específicos realizados a estas clases.

Main.cpp

La función principal se actualiza al inicio y cierre la clase CollisionManager.

 #include "OgreEngineManager.h" #include "WeaponDatabase.h" #include "EnemyDatabase.h" #include "GameLevel.h" #include "CollisionManager.h" #include "IrrKlangEngineManager.

h" #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # define WIN32_LEAN_AND_MEAN # incluyen "windows.h" INT WINAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) #elseint main (int argc, char ** argv) #endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("FileSystem", "../../media", "General")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("postal", "../../media/media.zip", "General")); si (ENGINEM

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.