Last ned demoen og kildekode FOR WINDOWS
Last ned demoen og kildekode for Linux
TILBAKE TIL TUTORIAL INDEX
På dette punktet i demoen vi har fiender og våpen, men de to ikke samhandler. For at punktene skal være i stand til å skyte fiender vi trenger for å legge dueller.
Kollisjon påvisning er en svært komplisert emne, blir fokus for mange en forskningsartikkel. Men vi kan komme unna med en veldig enkel duellsystem fordi responsen på alle kollisjoner i spillet vil være fjerning av en av de kolliderende stedene.
Et våpen vil bli fjernet når den treffer et skip og et fiendtlig skip vil bli fjernet hvis det kolliderer med spilleren.
Hver objekt som er å kollidere med andre gjenstander strekker en base klasse kalt CollisionObject.
< p> CollisionObject.h
Vi ønsker bare objekter som er aktiv for å være involvert i kollisjoner. Vi ønsker bare de objektene som er aktiv for å være involvert i en kollisjon, så vi forlenge PersistentFrameListener klasse, noe som gir oss tilgang til IsActive funksjonen.
Dette vil la CollisionManager vite om objektet skal delta i en kollisjon
/* * CollisionObject.h * * Forfatter:. Matthew Casperson * E-post: [email protected] * Nettsted: http: //www. brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONOBJECT_H_ # definere COLLISIONOBJECT_H_ # include "Ogre.h" #include "PersistentFrameListener.h" bruker namespace Ogre, klasse CollisionObject: public PersistentFrameListener {public: CollisionObject (int collisionType) ; virtuell ~ CollisionObject (); ugyldig Startup (); void Shutdown (); int GetCollisionType () const {return collisionType;}
GetBoundingSphere funksjonen er rene virtuelle, noe som betyr at det må settes i verk ved å utvide klassen. Denne funksjonen skal returnere en Sphere i verden koordinater som grenser objektet på skjermen
virtuell Sphere GetBoundingSphere () = 0;.Kollisjon funksjonen kalles når en kollisjon er oppdaget mellom to objekter.
Det er opp til å utvide klassen om ikke å delta i kollisjon (så en fiende som kolliderer med en fiende våpen ville ikke gjøre noe i respons til en kollisjon).
virtual void Collision (CollisionObject * andre ) {} beskyttet: int collisionType;}; # endifCollisionObject.cpp
#include "CollisionObject.h" #include "CollisionManager.h" CollisionObject :: CollisionObject (int collisionType): collisionType (collisionType ) {COLLISIONMANAGER.AddCollisiKomme 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