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

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

Kollision (object1); }}}} Return true;}

Klasser som spelare, Vapen och Enemy som förlängde PersistentFrameListener klassen nu utöka CollisionObject klassen. Nedan kan du se hur fienden klassen implementerar kollisionsfunktionen. Omdömen

 void Enemy :: Kollision (CollisionObject * andra) {if (andra-> GetCollisionType () == PLAYER_WEAPON_CT) {Vapen * vapen = static_cast (andra ); this-> sköldar - = weapon-> GetDamage (); if (this-> sköldar GetCollisionType () == PLAYER_CT) {avstängning (); }} 

BasicEnemy klassen implementerar GetBoundingSphere funktionen med den inbyggda getWorldBoundingSphere funktion som finns på alla Ogre MovableObjects (i stort sett alla visuella Ogre objekt).

Omdömen

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

De förändringar för vapen, Bullet och spelar klasser är likartade. Du kan ta en titt på källkoden för att se de specifika ändringar som gjorts i dessa klasser. Omdömen

main.cpp Omdömen

Huvudfunktionen uppdateras till start och avstängning av CollisionManager klassen. Omdömen

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

h" #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # definierar WIN32_LEAN_AND_MEAN # include "windows.h" INT WinAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) #elseint main (int argc, röding ** argv) #endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("Filesystem", "../../media", "Allmänt")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("Zip", "../../media/media.zip", "Allmänt")); if (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.Shutdown (); GAMELEVEL.Shutdown (); IRRKLANGENGINEM

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