*   >> Lezen Onderwijs artikelen >> science >> programming

Het maken van een 3D-spel met Ogre - Collision Detection

Download de demo en de broncode voor Windows

Download de demo en de broncode voor Linux

Terug naar de tutorial INDEX

Op dit punt in de demo hebben we vijanden en wapens, maar de twee niet met elkaar omgaan. Om de kogels kunnen vijanden moeten we collision detectie toe te schieten.

Collision detection is zeer ingewikkeld onderwerp, is de focus van menig research paper. Wij kunnen weg met een zeer eenvoudige collision detectie systeem, omdat de reactie op alle botsingen in het spel het verwijderen van een van de botsende objecten zijn.

Een wapen zal worden verwijderd als het hits van een schip en een vijandelijk schip zal worden verwijderd als het botst met de speler.

Elk object dat is te botsen met andere objecten breidt een basisklasse genaamd CollisionObject.

< p> CollisionObject.h

Wij willen alleen objecten die actief betrokken zijn bij botsingen zijn. We willen alleen maar de objecten die actief worden betrokken bij een aanrijding zijn, zodat we breiden de PersistentFrameListener klasse, die ons de toegang tot de isActive functie geeft.

Dit laat de CollisionManager weten of het object moet deelnemen aan een botsing

 /* * CollisionObject.h * * Auteur:. Matthew Casperson * E-mail: [email protected] * Website: http: //www. brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONOBJECT_H_ # definiëren COLLISIONOBJECT_H_ # include "Ogre.h" #include "PersistentFrameListener.

h" using namespace Ogre; klasse CollisionObject: public PersistentFrameListener {public: CollisionObject (int collisionType) ; virtual ~ CollisionObject (); ongeldig Startup (); leegte Shutdown (); int GetCollisionType () const {return collisionType;}

De GetBoundingSphere functie is puur virtueel, wat betekent dat het door de uitbreiding van de klas te worden uitgevoerd. Deze functie moet een bol terug in de wereld van coördinaten dat grenzen van het object op het scherm

 virtual Sphere GetBoundingSphere () = 0;.

De Collision functie wordt aangeroepen als een botsing wordt gedetecteerd tussen twee objecten. Het is aan de uitbreiding van de klas al of niet deel te nemen aan de botsing (zodat een vijand die wordt botsing met een vijand wapen zou niets doen in reactie op een botsing).

 virtuele leegte Collision (CollisionObject * andere ) {} beschermd: int collisionType;} # endif 

CollisionObject.cpp

 #include "CollisionObject.h" #include "CollisionManager.

h" CollisionObject :: Collision

Page   <<       [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.