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,
Komme i gang med Activeperl
- Referanse i C ++
- Hvordan lage Nøkkel Generatorer
- Opprette en live Twitter statusoppdatering med YQL og JavaScript
- Unntak håndtering i C ++
- Vektor Modifikatorer i C ++
- Mysql Tilgang Gull Overview
- Spesifisere Unntak funksjoner i C ++
- Hvordan implementere diskusjonen i Java?
- Komme i gang med Javascript
- Hvordan lage Windows XP Look Like Windows 7