*   >> Чтение Образование Статьи >> science >> programming

Создание 3D-игры с Огре - Столкновение Detection

Столкновение (object1); }}}} Возвращает истину;} <р> Классы, как игрока, оружия и враг, который продлен класс PersistentFrameListener Теперь расширим класс CollisionObject. Ниже вы можете увидеть, как классовый враг реализует функцию столкновений.

 пустот Enemy :: Collision (CollisionObject * прочее) {если (в противном> GetCollisionType () == PLAYER_WEAPON_CT) {* Оружие Оружие = static_cast (другой ); this-> щиты - = оружейного> GetDamage (); если (this-> Щиты GetCollisionType () == PLAYER_CT) {Shutdown (); }} <р> Класс BasicEnemy реализует функцию GetBoundingSphere помощью встроенного в функции getWorldBoundingSphere, которая доступна на всех Огре MovableObjects (практически все визуальные объекты Огре).


 Сфера BasicEnemy :: GetBoundingSphere () {вернуть это- > Сетка-> getWorldBoundingSphere ();} <р> Изменения для оружия, пули и классы игрока схожи. Вы можете взглянуть на исходный код, чтобы увидеть конкретные изменения, внесенные в этих классах. 

<Р> main.cpp

<р> Основная функция обновлена ​​запуск и завершение работы класс 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 # определить WIN32_LEAN_AND_MEAN # включить "windows.h" INT WINAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) #elseint основной (INT ARGC, символ ** ARGV) #endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("файловую систему", "../../media", "Общие")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("Страна", "../../media/media.zip", "Общие")); если (ENGINEMANAGER.Startup (STD :: строка ("plugins.cfg"), STD

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.