o download do demo e código fonte PARA WINDOWS
o download do demo e código fonte para Linux
Voltar ao Índice TUTORIAL
Neste ponto no demo temos inimigos e armas, mas os dois não interagem. Para que as balas para ser capaz de disparar sobre os inimigos é preciso adicionar a detecção de colisão.
A detecção de colisão é um assunto muito complicado, sendo o foco de muitos um trabalho de pesquisa.
No entanto, podemos ir longe com um sistema de detecção de colisão muito simples, porque a resposta para todas as colisões no jogo será a remoção de um dos objetos que colidem. A arma será removido quando ela atinge um navio e um navio inimigo será removido se choca com o jogador.
Cada objeto que é a colidir com outros objetos estende uma classe base chamada CollisionObject.
< p> CollisionObject.h
Queremos apenas objetos que estão ativos a serem envolvidos em colisões.
Queremos apenas os objetos que estão ativos a ser envolvido em uma colisão, por isso, estender a classe PersistentFrameListener, que nos dá acesso à função IsActive. Isso permitirá que o CollisionManager saber se o objeto deve participar de uma colisão
/* * * * CollisionObject.h Autor:. Matthew Casperson * Email: * [email protected] Website: http: //www. brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONOBJECT_H_ # definir COLLISIONOBJECT_H_ # incluem "Ogre.h" #include "PersistentFrameListener.h" usando namespace Ogre; classe CollisionObject: PersistentFrameListener pública {public: CollisionObject (int collisionType) ; Virtual ~ CollisionObject (); anular Startup (); Shutdown void (); int GetCollisionType () const {return collisionType;}
A função GetBoundingSphere é puro virtual, o que significa que ele tem que ser implementado pela classe estendendo. Esta função deve retornar uma esfera em coordenadas globais que circunda o objeto na tela
esfera virtual GetBoundingSphere () = 0;.A função de colisão é chamado quando uma colisão é detectada entre dois objetos.
Cabe à classe estender ou não a participar na colisão (assim um inimigo que está colidindo com uma arma inimigo não faria nada em resposta a uma colisão).
virtual vazio Collision (CollisionObject * outro ) {} protegido: int collisionType;}; # endifCollisionObject.cpp
#include "CollisionObject.h" #include "CollisionManager.h" CollisionObject :: CollisionObject (int collisionType): collisionType (collisComeçando com Activeperl
- Móvel Lançamento Skypephone
- Fazendo um clone de Space Invaders com PushButton - Bullets
- C-Sharp
- Eclipse IDE for Java Programmers
- Guia para Iniciantes uma linguagem de programação: Php
- Projetando banco de dados Tables
- Mysql data e hora Functions
- Estilos classe de janela
- Como configurar suas conexões de rede do Windows Vista
- Aplicativo de console para criar Triângulo Pirâmide Usando C # Code