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

Fazendo um jogo 3D com Ogre - Detecção de colisão

Collision (object1); }}}} Return true;}

Classes como jogador, arma e Inimigo que se estendeu a classe PersistentFrameListener agora estender a classe CollisionObject. Abaixo, você pode ver como o inimigo de classe implementa a função de colisão.

 Inimigo vazio :: Colisão (CollisionObject * outro) {if (outro-> GetCollisionType () == PLAYER_WEAPON_CT) {* Arma arma = static_cast (outro ); this-> escudos - weapon- => GetDamage (); if (this-> escudos GetCollisionType () == PLAYER_CT) {Shutdown (); }} 

A classe BasicEnemy implementa a função GetBoundingSphere usando o construído em função getWorldBoundingSphere que está disponível em todos MovableObjects Ogre (essencialmente todos os objetos Ogre visuais).


 Sphere BasicEnemy :: GetBoundingSphere () {return this- > mesh-> getWorldBoundingSphere ();} 

As mudanças para o Armamento, Bala e aulas de Jogadores são semelhantes. Você pode dar uma olhada no código fonte para ver as alterações específicas feitas a essas classes.

Main.cpp

A função principal é atualizado para inicialização e desligamento da classe CollisionManager.

 #include "OgreEngineManager.h" #include "WeaponDatabase.h" #include "EnemyDatabase.h" #include "GameLevel.h" #include "CollisionManager.h" #include "IrrKlangEngineManager.

h" #if == OGRE_PLATFORM OGRE_PLATFORM_WIN32 # definir WIN32_LEAN_AND_MEAN # incluem "windows.h" INT WINAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) #elseint main (int argc, char ** argv) #endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("FileSystem", "../../media", "General")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("Zip", "../../media/media.zip", "General")); if (ENGINEMANAGER.Startup (std :: string ("plugins.cfg"), std :: string ("ogre.cfg"), std :: string ("ogre.log"))) {IRRKLANGENGINEMANAGER.Startup (); ENEMYDATABASE.

Startup (); WEAPONDATABASE.Startup (); COLLISIONMANAGER.Startup (); GAMELEVEL.Startup ("Level1.XML"); ENGINEMANAGER.StartRenderLoop (); COLLISIONMANAGER.Shutdown (); WEAPONDATABASE.Shutdown (); EN

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