*   >> Læs Uddannelse artikler >> science >> programming

Realiseringen af ​​et 3D-spil med Ogre - Collision Detection

Download demoen og kildekode FOR WINDOWS

Download demoen og kildekode til Linux

TILBAGE TIL tutorial INDEX

På dette tidspunkt i demoen har vi fjender og våben, men de to ikke interagere. For kuglerne at kunne skyde fjender, vi har brug for at tilføje kollisionsdetektion.

Kollision opdagelse er et meget kompliceret emne, som er fokus for mange et forsknings-papir. Men vi kan slippe af sted med en meget enkel kollisionsdetektion system, fordi svaret på alle kollisioner i spillet vil være fjernelsen af ​​en af ​​de kolliderende objekter.

Et våben vil blive fjernet, når den rammer et skib og en fjende skib vil blive fjernet, hvis den kolliderer med afspilleren.

Hver objekt, der er til at kollidere med andre objekter udvider en base klasse kaldet CollisionObject.

< p> CollisionObject.h

Vi ønsker kun objekter, der er aktiv for at være involveret i kollisioner. Vi kun ønsker de objekter, der er aktiv for at være involveret i en kollision, så vi udvider PersistentFrameListener klasse, hvilket giver os adgang til IsActive funktion.

Dette vil lade CollisionManager, om objektet skal deltage i en kollision

 /* * CollisionObject.h * * Forfatter:. Matthew Casperson * E-mail: [email protected] * Hjemmeside: http: //www. brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONOBJECT_H_ # definerer COLLISIONOBJECT_H_ # omfatte "Ogre.h" # include "PersistentFrameListener.

h" ved hjælp af namespace Ogre, klasse CollisionObject: offentlig PersistentFrameListener {public: CollisionObject (int collisionType) ; virtuelle ~ CollisionObject (); void Startup (); void Shutdown (); int GetCollisionType () const {tilbage collisionType;}

GetBoundingSphere funktionen er ren virtuel, hvilket betyder, at det skal gennemføres af at udvide klassen. Denne funktion skal returnere en kugle i verden koordinater at bounds objektet på skærmen

 virtuelle Sphere GetBoundingSphere () = 0;. 

Kollision funktion kaldes, når der registreres en kollision mellem to objekter.

Det er op til den strækker klassen, om de vil deltage i kollisionen (så en fjende, der kolliderer med en fjende våben ville ikke gøre noget som reaktion på en kollision).

 virtual void Collision (CollisionObject * andre ) {} beskyttet: int collisionType;}; # endif 

CollisionObject.cpp

 #include "CollisionObject.h" # include "CollisionManager.h" CollisionObject :: CollisionObject (int collisionType): co

Page   <<       [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.