<р> Скачать демо и исходники для Linux
<р> Возврат к учебнику ИНДЕКС
<р > На данный момент в демо мы имеем врагов и оружия, но два не взаимодействуют. Для того, чтобы пули, чтобы иметь возможность стрелять врагов, нам нужно добавить обнаружение столкновений.
<Р> Обнаружение столкновений является очень сложным предметом, будучи в центре внимания многих научно-исследовательской работе.
Тем не менее, мы можем уйти с очень простой системой обнаружения столкновения, потому что ответ на все столкновения в игре будет удаление одного из сталкивающихся объектов. Оружие будет удален, когда она попадает на корабль и вражеский корабль будет удален, если он сталкивается с игроком.
<Р> Каждый объект, который является сталкиваться с другими объектами расширяет базовый класс CollisionObject.
< р> CollisionObject.h
<р> Мы хотим только объекты, которые являются активными, участвуют в столкновениях.
Мы хотим только те объекты, которые являются активными участвовать в столкновении, так что мы расширим класс PersistentFrameListener, который дает нам доступ к IsActive функции. Это позволит CollisionManager знать, если объект должен участвовать в столкновении
/* * * * CollisionObject.h Автор:. Мэтью Касперсон * E-mail: * [email protected] Сайт: HTTP: //WWW. brighthub.com/hubfolio/matthew-casperson.aspx * /# IfNDef COLLISIONOBJECT_H_ # определить COLLISIONOBJECT_H_ # включить "Ogre.h" #include "PersistentFrameListener.h", используя пространства имен Ogre; класс CollisionObject: общественная PersistentFrameListener {общественности: CollisionObject (INT collisionType) ; Виртуальный ~ CollisionObject (); аннулированию Startup (); Выключение недействительными (); INT GetCollisionType () {вернуть строительства collisionType;} <р> Функция GetBoundingSphere чисто виртуальной, это означает, что он должен быть реализован, проходящей класса. Эта функция должна возвращать Сферу в мировых координатах, что оценки объекта на экране
виртуальная сфера GetBoundingSphere () = 0;.<Р> Функция Столкновение называется, когда столкновение обнаружено между двумя объектами. Это до выступающей класса или не участвовать в столкновении (так врага, который при столкновении с вражеским оружием ничего не будет делать в ответ на столкновения).
виртуальный недействительными Столкновение (CollisionObject * прочее ) {} защищены: INT collisionType;}; # ENDIF <р> CollisionObject.cpp
#in