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;}; # endifCollisionObject.cpp
#include "CollisionObject.h" # include "CollisionManager.h" CollisionObject :: CollisionObject (int collisionType): coKom godt i gang med Activeperl
- Sende HTML Form med ActivePerl
- Påstande og Fejl Tal i C ++
- Abstract Factory Design Pattern
- Pakker og N-Ary Association
- Mysql Opret tabel SQL-sætning af Chrys
- Udfør Smertefri SEO med Best Firefox Extensions
- Grundlæggende om C ++ Identifier Scope
- En kort oversigt over SQL Injection
- Programmør Ved Heart
- Edit Control i Windows