*   >> Lectura Educación Artículos >> science >> programación

Hacer un juego en 3D con Ogre - Colisión Detection

descargar la demo y el código fuente PARA WINDOWS

descargar la demo y el código fuente para Linux

VOLVER A EL INDICE TUTORIAL

En este punto de la demo que tenemos enemigos y armas, pero los dos no interactuamos. A fin de que las balas sean capaces de disparar a los enemigos que tenemos que añadir la detección de colisiones.

La detección de colisiones es un tema muy complicado, siendo el foco de muchos un trabajo de investigación.

Sin embargo, podemos llegar lejos con un sistema muy simple de detección de colisiones debido a que la respuesta a todas las colisiones en el juego será la eliminación de uno de los objetos que chocan. Un arma se eliminará cuando se realiza un barco y un barco enemigo se eliminará si choca con el jugador.

Cada objeto que se va a chocar con otros objetos se extiende una clase base llamada CollisionObject.

< p> CollisionObject.h

Sólo queremos objetos que son activos de participar en las colisiones.

Sólo queremos esos objetos que están activas estar involucrado en una colisión, por lo que extendemos la clase PersistentFrameListener, que nos da acceso a la función IsActive. Esto permitirá que el CollisionManager sabe si el objeto debe participar en una colisión

 /* * * CollisionObject.h. * Autor: Mateo Casperson * Email: [email protected] * Sitio web: http: //www. brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONOBJECT_H_ # definir COLLISIONOBJECT_H_ # incluyen "Ogre.h" #include "PersistentFrameListener.

h" using namespace Ogre; clase CollisionObject: PersistentFrameListener pública {public: CollisionObject (int collisionType) ; virtuales ~ CollisionObject (); anular de inicio (); void apagado (); int GetCollisionType () const {return collisionType;}

La función GetBoundingSphere es virtual pura, lo que significa que tiene que ser implementado por la clase que se extiende. Esta función debe devolver una Esfera en coordenadas del mundo que los límites del objeto en la pantalla

 virtual de Esfera GetBoundingSphere () = 0;.

La función de colisión se llama cuando se detecta una colisión entre dos objetos. Depende de la clase que se extiende o no a participar en la colisión (por lo que un enemigo que está colisionando con un arma enemigo no haría cualquier cosa en respuesta a una colisión).

 virtual de vacío Collision (CollisionObject * otra ) {} protegida: int collisionType;}; # endif 

CollisionObject.cpp

Page   <<       [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.