*   >> Lese Utdanning Artikler >> science >> programming

Å gjøre en 3D-spill med Ogre - Collision Detection

Collision (object1); }}}} Return true;}

Klasser som spiller, våpen og Enemy at utvidet PersistentFrameListener klassen nå forlenge CollisionObject klassen. Nedenfor kan du se hvordan Enemy klassen implementerer Collision funksjonen.

 void Enemy :: Collision (CollisionObject * andre) {if (på annen> GetCollisionType () == PLAYER_WEAPON_CT) {Weapon * våpen = static_cast (annet ); this-> skjold - = weapon-> GetDamage (); if (this-> skjold GetCollisionType () == PLAYER_CT) {Shutdown (); }} 

BasicEnemy klassen implementerer GetBoundingSphere funksjon ved hjelp av den innebygde getWorldBoundingSphere funksjon som er tilgjengelig på alle Ogre MovableObjects (i hovedsak alle visuelle Ogre objekter).


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

Endringene for våpen, Bullet og spiller klasser er like. Du kan ta en titt på kildekoden for å se de konkrete endringene i disse klassene.

Main.cpp

Hovedfunksjonen er oppdatert til oppstart og avslutning av CollisionManager klassen. Anmeldelser

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

h" #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # definere WIN32_LEAN_AND_MEAN # include "windows.h" INT WinAPI winmain (hInstance hInst, hInstance, LPSTR strCmdLine, INT) #elseint main (int argc, røye ** argv) #endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("filsystem", "../../media", "Generelt")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("Zip", "../../media/media.zip", "Generelt")); 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 (); IRRKLANGENGINEMANAGER.Shutdown (); } ENGINEMANAGER.Shutdown ();}

Med disse endringene fiender kan bli skutt og spilleren og fiendene kan også kolliderer. I øyeblikket fiender og våpen er rett og slett fjernet fra det nivået,

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.