*   >> Leitura Educação Artigos >> science >> programação

Fazendo um jogo 3D com Ogre - Adicionando Effects

o download do demo e código fonte PARA WINDOWS

o download do demo e código fonte para Linux

Voltar ao Índice TUTORIAL

Com a detecção de colisão em funcionamento, é agora possível para destruir os inimigos. O efeito é um pouco insatisfatório, porque embora eles simplesmente desaparecer. Podemos usar um sistema de partículas para uma explosão, mas por sistemas de partículas padrão no Ogre são projetados para serem efeitos permanentes, ou seja, uma vez adicionado à cena um sistema de partículas irá exibir o seu efeito até que seja removido.

Desde a explosão é um fora de "bang", precisamos de uma maneira de adicionar um sistema de partículas, esperar que ela termine, e então removê-lo da cena. A classe ParticleSystemEffect será utilizado para este fim

ParticleSystemEffect.h

 /* * * * ParticleSystemEffect.h Autor:. Matthew Casperson * Email: * [email protected] Website: http: //www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef PARTICLESYSTEMEFFECT_H_ # definir PARTICLESYSTEMEFFECT_H_ # incluem "PersistentFrameListener.

h" class ParticleSystemEffect: PersistentFrameListener pública {public: ParticleSystemEffect (); ~ ParticleSystemEffect (); anular Startup (const Vector3 & posição, const string & particleSystemName); Shutdown void (); bool FrameStarted (const FrameEvent & EVT); protegido: InitialiseVariables void (); flutuar timeToLive; SceneNode * SceneNode; ParticleSystem * particleSystem;}; # endif

ParticleSystemEffect.cpp

 #include "ParticleSystemEffect.h" #include "GameLevel.h" #include "Utilities.

h" ParticleSystemEffect :: ParticleSystemEffect () {InitialiseVariables ( );} ParticleSystemEffect :: ~ ParticleSystemEffect () {}

A função de inicialização é muito semelhante às funções de inicialização para os inimigos e armas na medida em que cria um SceneNode ao qual atribui um objeto Ogre (um sistema de partículas, neste caso, )

 vazio ParticleSystemEffect :: Startup (const Vector3 & posição, const string & particleSystemName) {PersistentFrameListener :: Startup (.); SceneNode = GAMELEVEL.GetPlayerSceneNode () -> createChildSceneNode (posição); particleSystem = GAMELEVEL.

GetSceneManager () -> createParticleSystem (Utilities :: GetUniqueName ("ParticleSystemEffect"), particleSystemName); sceneNode-> attachObject (particleSystem);

Depois, temos que trabalhar para fora quanto tempo o sistema de partículas deve funcionar para antes de ser retirado do nível. A

Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.