*   >> Læs Uddannelse artikler >> science >> programming

Realiseringen af ​​et 3D-spil med Ogre - Collision Detection

Kollision (object1); }}}} Returnere sandt;}

Klasser som afspiller, Weapon og Enemy, som har forlænget PersistentFrameListener klassen nu udvide CollisionObject klassen. Nedenfor kan du se, hvordan Enemy klassen implementerer kollision funktionen.

 ugyldig Enemy :: Collision (CollisionObject * andet) {if (på anden> GetCollisionType () == PLAYER_WEAPON_CT) {Våben * våben = static_cast (andre ); this-> skjolde - = weapon-> GetDamage (); hvis (this-> skjolde GetCollisionType () == PLAYER_CT) {Shutdown (); }} 

BasicEnemy klassen implementerer GetBoundingSphere funktionen ved hjælp af den indbyggede getWorldBoundingSphere funktion, der er tilgængelig på alle Ogre MovableObjects (stort set alle visuelle Ogre objekter).


 Sphere BasicEnemy :: GetBoundingSphere () {return dette- > mesh-> getWorldBoundingSphere ();} 

Ændringerne til våben, Bullet og Spiller klasser er ens. Du kan tage et kig på kildekoden for at se de konkrete ændringer af disse klasser.

main.cpp

Den vigtigste funktion er opdateret til start og lukning af CollisionManager klassen.

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

h" # Hvis OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # definerer WIN32_LEAN_AND_MEAN # omfatte "windows.h" INT WinAPI WinMain (hInstance hInst, hInstance, LPSTR strCmdLine, INT) #elseint main (int argc, char ** argv) #endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("filsystem", "../../media", "Generelt")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("Zip", "../../media/media.zip", "Generelt")); hvis (ENGINEMANAGER.Startup (std :: string ("plugins.cfg"), std :: string ("ogre.cfg"), std :: string ("ogre.log"))) {IRRKLANGENGINEMANAGER.

Startup (); ENEMYDATABASE.Startup (); WEAPONDATABASE.Startup (); COLLISIONMANAGER.Startup (); GAMELEVEL.Startup ("Level1.XML") ENGINEMANAGER.StartRenderLoop (); COLLISIONMANAGER.Shutdown (); WEAPONDATABASE.Shutdown (); ENEMYDATABASE.Shu

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.