25 ноября 2010

glVehicles, Луноход и всякое по мелочам

Эйо! Всем привет... Наверно, из заголовка сообщения становится ясно, что название "glVehicles" лично для меня прочно закрепилось за самодельными демками и различными программами, связанными с физикой, механизмами и интересными находками для игр. Если вы не понимаете о чем идет речь, тогда стоит прочитать более ранние сообщения по этой теме в данном журнале
Буду стараться обновлять репозиторий, добавляя в него побольше всяких "вкусных" вещей, таких как средства передвижения, физические механизмы, прототипы геймплеев и всякое другое, что с одной стороны было бы не жалко выложить с открытыми исходными кодами, и, с другой стороны, было бы не стыдно продемонстрировать всеобщему обозрению. Сегодня есть чем порадовать - появилась 5ая демонстрационная программа с главным героем - Луноходом о пяти колёсах:


Но, обо всем по порядку. Итак, список изменений:

1. Отдельная цветовая схема дебаг-отрисовки для сенсорных тел. Что такое сенсоры и зачем они нужны? Если возник такой вопрос, советую прочесть справку Box2d в разделе Sensors (dll в репозитории на самом деле для версии box2d 2.01, поэтому расхождения есть большие, но смысл остается тем же). Если в двух словах: сенсоры - это тела, с которыми не взаимодействуют остальные тела, но которые способны отслеживать контакты со всем физическим миром. Игрок пересек невидимый сенсор возле двери? Открыть дверь! Сенсор над головой персонажа пересекся с каким-то объектом? Пригнуть голову! В общем, теперь сенсоры в дебаг-режиме отрисовываются красноватым цветом, чтобы можно было легко их отличать от других тел.

2. Добавил метод TBox2d_JointsList.ClearJoint(), удаляющий определенное сочленение из списка. Я что-то не пойму, почему раньше этого не было?! Согласен, непорядок! Исправил...

3. Открыл свойство TBox2d_CustomBody.Omega на запись. Зачем? Иногда бывает необходимо моментально остановить вращение тела. При рестарте, например.

4. Также добавил метод TBox2d_CustomBody.ClearShapes() для удобства "чистки" тел.

5. У меня немного заканчивается фантазия, поэтому я решил спросить на форуме, какие еще 2д-транспортные средства можно смоделировать. C4 предложил сделать что-то вроде Лунохода. В общем, результат вышел такой:



Мне вроде нравится, поэтому оставлю пока в таком виде... Кстати, на видео видны сенсоры справа-вверху и слева-внизу экрана, которые активизируют различные механизмы на уровне, тем самым оживляя окружение.
Скачать отдельно ехе-файл, чтобы поуправлять этим механизмом, можно отсюда.

6. Кстати, недавно возникло желание все-таки сделать "сектор видения" объекта. Кто играл в "Commandos" тот легко вспомнит такой сектор у противников:
(на скрине выше на самом деле какой-то косяк в дальнем углу, но лучше не нашел)

Я решил пока сделать очень просто: сотня RayCast'ов в этот сектор, потом соединяем в многоугольник и отрисовываем все это барахло. Выглядит нормуль:

Опробовать можно в Demo-4, нажав цифру 2 на клавиатуре. Для возвращения к предыдущего отображению (только один луч), нужно нажать цифру 1. Одно напрягает - очень сильно просаживается ФПС. Было 140, стало 120. Никуда не годится. Все думаю, какие есть еще варианты. Придумалось посылать лучи через вершины всех многоугольников, потом сортировать по углу. Но все равно остаются проблемы в тех или иных случаях. Единой схемы быстрого построения многоугольника вот такого "сектора видения" я пока не придумал. Может кто чего подскажет?

На этом пока все... Это до 15ой ревизии вроде бы... Кстати, завел для наглядности еще один ярлык здесь в журнале, не надо долго думать, чтобы догадаться, как я его назвал - glVehicles. Будут идеи по поводу еще каких-нибудь транспортных средств - пишите, всегда интересно попробовать смоделировать что-то подобное!

Сообщения, схожие по тематике:

0 коммент.:

Отправить комментарий