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

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

ladda ner demot och källkod för Windows Review

ladda ner demot och källkod för Linux Omdömen

TILLBAKA TILL Handledningen INDEX Omdömen

Vid denna punkt i demo har vi fiender och vapen, men de två inte samverkar. För kulorna ska kunna skjuta fiender som vi behöver för att lägga kollisionsdetektering. Omdömen

Kollisionsdetektering är ett mycket komplicerat ämne, är i fokus för många en uppsats.

Vi kan dock komma undan med en mycket enkel kollisionsdetekteringssystemet, eftersom svaret på alla kollisioner i spelet kommer att bli avlägsnandet av ett av de kolliderande föremålen. Ett vapen tas bort när den träffar ett skepp och en fiendeskepp kommer att tas bort om det kolliderar med spelaren. Omdömen

Varje objekt som är att kollidera med andra föremål sträcker sig en basklass som heter CollisionObject. Omdömen < p> CollisionObject.h Omdömen

Vi vill bara objekt som är aktiva för att vara inblandade i kollisioner.

Vi vill bara de objekt som är aktiva för att vara inblandade i en kollision, så vi förlänger PersistentFrameListener klassen, vilket ger oss tillgång till IsActive funktionen. Detta kommer att låta CollisionManager veta om objektet bör delta i en kollision Omdömen

 /* * CollisionObject.h * * Författare:. Matthew Casperson * Email: [email protected] * Hemsida: http: //www. brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONOBJECT_H_ # definierar COLLISIONOBJECT_H_ # include "Ogre.h" #include "PersistentFrameListener.

h" using namespace Ogre, klass CollisionObject: public PersistentFrameListener {public: CollisionObject (int collisionType) ; virtuella ~ CollisionObject (); void start (); void avstängning (); int GetCollisionType () const {return collisionType;}

GetBoundingSphere funktionen är rent virtuellt, vilket innebär att det måste genomföras av den utskjutande klassen. Den här funktionen ska returnera en sfär i världskoordinater att gränser objektet på skärmen Omdömen

 virtual Sphere GetBoundingSphere () = 0;. 

Kollisionen funktionen anropas när en kollision upptäcks mellan två objekt.

Det är upp till den utsträckta klassen om de vill delta i kollisionen (så en fiende som kolliderar med en fiende vapen skulle inte göra något som svar på en kollision). Omdömen

 virtual void Collision (CollisionObject * andra ) {} skyddad: int collisionType;}; # endif 

CollisionObject.cpp Omdömen

 #include "CollisionObject.h" #include "CollisionManager.h" CollisionObject :: CollisionO

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