![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Dronchik |
|
||||||||||||||||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 8 Всего: 37 |
Irrlicht. Коллизии
В этом уроке мы научимся сразу нескольким вещам. Во первых - мы научимся создавать коллизии для наших объектов. Во вторых - мы научимся загружать наши медиа-файлы из архивов zip и pk3. Приступаем! Сначала мы должны инициализировать графическое устройство. Это делается функцией createDevice. В предыдущем уроке расписано как провести инициализацию графического устройства с помощью функции createDevice, поэтому в этом уроке я расписывать это не буду. Параметры настраиваются по Вашему выбору. Далее мы получаем указатели на видео-драйвер, менеджер сцены и графический интерфейс. Делаем так же как и в предыдущем уроке. Далее мы должны получить доступ к файлам архива. Это мы делаем функцией addZipFileArchive.
После этого мы должны загрузить нашу карту. Карта загружается как обычный объект.
Теперь мы должны создать Triangle Selector. Без него мы не сможем создавать коллизии для нашей карты. Создание Triangle Selector делается так:
Теперь устанавливаем камеру от первого лица. Это нужно для того чтобы мы могли передвигаться по карте с видом от первого лица – как в шутерах. Так как мы не установили специальных контролёров, то все передвижения будут осуществляться стрелками клавиатуры.
О функции addCameraSceneNodeFPS подробнее вы можете прочитать в документации. Далее мы создаём коллизии. Это делается функцией createCollisionResponseAnimator. У этой функции первый параметр это selector объекта, относительно которого мы создаём коллизии. Второй параметр это то, что мы будем коллизить. В данном случаем это камера. Третий параметр это радиус эллипсоида, определяющий, сколько свободного места в позициях в 3-х мерном пространстве мы будем занимать. Четвёртым параметром устанавливаем гравитацию. Пятым устанавливаем камеру на нужную позицию(желательно камеру приподнимать на некоторое количества позиций, иначе будет эффект ползанья по карте, но ещё количество позиций для поднятия зависит от архитектуры карты). После этого мы очищаем память selector-а, добавляем аниматор для anim и очищаем память anim.
Теперь скроем курсор чтоб не мешал.
Теперь мы установим освещение сцены. Это делается функцией addLightSceneNode. Первый параметр это родитель. Он у нас не задан, поэтому ставим ноль. Второй параметр это позиция, откуда будет исходить свет.
Теперь для наглядности я покажу как находятся вершины для коллизий. Это не обязательный код, но он наглядно показывает работу нашего примера.
На сегодня всё. Компилируйте и бегайте по карте! ЗЫ: все используемые медиа-файлы являються стандартными медиа-файлами идущим с движком Irrlicht. Ольшевский Андрей aka Dronchik -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
||||||||||||||||
|
|||||||||||||||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |