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

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

clude "CollisionObject.h" #include "CollisionManager.h" CollisionObject :: CollisionObject (INT collisionType): collisionType (collisionType ) {COLLISIONMANAGER.AddCollisionObject (это);} CollisionObject :: ~ CollisionObject () {COLLISIONMANAGER.RemoveCollisionObject (это);}. <р> Функции Запуск и остановка добавлять и удалять локальный объект из CollisionManager

 аннулированию CollisionObject :: Startup () {PersistentFrameListener :: Ввод в эксплуатацию ();} недействительным CollisionObject :: Shutdown () {PersistentFrameListener :: Shutdown ();} <р> PersistentFrameListener.

h

другой большой вопрос с столкновения Обнаружение убедившись объекты не перемещаются через друг друга во время кадра. Мы будем решать это, установив максимальное время на каждом кадре, что, предполагая, сталкивающиеся объекты не слишком мал, и движется слишком быстро, будет гарантировать, что два объекта. Это делается в классе PersistentFrameListener, который в настоящее время также включает функцию, называемую FrameEnded, что называется один раз за кадр после FrameStarted был призван на всех активных объектов

 /* * * * PersistentFrameListener.h Автор:.

Мэтью Касперсон * E-mail: * Веб-сайт [email protected]: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# IfNDef PERSISTENTFRAMELISTENER_H_ # определить PERSISTENTFRAMELISTENER_H_ # включить "Ogre.h" #include "OgreEngineManager.h "#include" GameConstants.h "класс PersistentFrameListener: общественная FrameListener {общественности: PersistentFrameListener (): isStarted (ложь) {ENGINEMANAGER.GetRoot () -> addFrameListener (это); } Виртуальный ~ PersistentFrameListener () {если (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.

GetRoot () -> removeFrameListener (это); } Недействительным запуска () {isStarted = TRUE; } Недействительным выключение () {isStarted = ложь; } BOOL frameStarted (строительства FrameEvent & ЭВТ) {если (this-> isStarted) вернуться FrameStarted (GetFixedFrameEvent (ЭВТ)); вернуться верно; } BOOL frameEnded (строительства FrameEvent & ЭВТ) {если (this-> isStarted) вернуться FrameEnded (GetFixedFrameEvent (ЭВТ)); вернуться верно; } Виртуальный BOOL FrameStarted (Пост FrameEvent и ЭВТ) {вернуться верно;} виртуальный Ьоо FrameEnded (Пост FrameEvent & ЭВТ) {вернуться верно;} BOOL IsStarted () строительства {вернуться isStarted;} защищены: FrameEvent GetFixedFrameEvent (строительства FrameEvent & ЭВТ) {FrameEvent фиксированной; fixed.

timeSinceLastFrame = evt.timeSinceLastFrame>

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