Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GLScene Проверка коллизий между пулями и монстрами. Как сделать ?


Кен ©   (2003-05-04 04:40:00) 

И как сделать, чтобы быстрее работало ? Проверять в лоб, то есть все пули на всех монстров - наверно слишком медленно получится. А как иначе ?

Другой вопрос - как оценивать повреждения монстрам ? Там в голову - смерть. В руку - ранение. В сердце - смерть. Как это сделать ?


Кен   (2003-05-07 06:11:00) [1]

Alek Aaz ©
Сделал я коллизии пуль и монстров. Встроенными в GLScene средствами. В общем давольно просто оказалось. И тормозят не столько коллизии, сколько модели монстров.
Теперь можно по ним стрелять и они дохнут. Только вот вооружить их пока неполучилось. Незнаешь, где можно найти md2-модели животных ? Тигров там, быков из Сэма, крокодилов, кенгуру ?


Alek Aaz   (2003-05-07 03:58:00) [2]

Дома есть. Правда дома нет :) (съезжаю я от родичей)
Так что пока никак не пишу :)


Кен   (2003-05-06 05:22:00) [3]

> Ну нету па работе Delphi, нету ... :(
А где есть ? Как же ты пишешь на нём тогда ?


Alek Aaz   (2003-05-06 03:59:00) [4]

дерева в области земли - ствол идущий вертикально вверх. По размерам ствола рисуем прямоугольник.
Це и есть всякие "B,Q - деревья". Читал где-то.
Это намного быстрее будет работать, чем проверять коллизи с FreeForm и каждым её треугольником.
Вполне может быть. Не проверял.
Откомпилируй заново
Ну нету па работе Delphi, нету ... :(


Кен   (2003-05-06 01:20:00) [5]

Alek Aaz ©
> Коллизии нет.
> Вообще обязана быть.

Я имел ввиду, что не делал пока. Пока разбираюсь только с ними. Иногда действительно пули проскакивают мимо монстров, когда fps слишком маленький.

> Не понял ничего ... Ты хочешь сказать, что когда объект
> как boxedin, то дерево(с веточками) программа рассматривает
> как куб так? :) Це так и задумано.

Дом - он квадратный. По его размерам можно сделать невидимый куб в GLScene и проверять с этим кубом коллизии. У дерева в области земли - ствол идущий вертикально вверх. По размерам ствола рисуем прямоугольник. И проверяем коллизии с ним. Это намного быстрее будет работать, чем проверять коллизи с FreeForm и каждым её треугольником.
Куба - это всего 12 треугольников.

> Да никак. Демку скачал. Тока чтой-то винда выдает, что exe"шник
> совсем не правильный exe"шник.

Откомпилируй заново. Исходник же прилагается. У меня всё работает. Пули летят давольно красиво. Веером. Особенно когда откуда нибудь сверху полишь.


Alek Aaz   (2003-05-05 13:24:00) [6]

Коллизии нет.
Вообще обязана быть. Или что-то неправильно сделал, или скорость пули слишком большая. Уменьши скорость пули.

В моей демке ( http://www.triponavtika.narod.ru/game.html}, коллизии с домом по примеру boxedin"а неполучаются. Вернее всё глючно очень. Проще наверно дом обрисовать кубом, а актёра другим кубом, и проверять коллизии между кубами. И так обрисовывать кубами вообще все дома деревья, столбы и прочие объекты которые в игру вставляются. Геморойно конечно, но хоть более-менее нормально работает.
Не понял ничего ... Ты хочешь сказать, что когда объект как boxedin, то дерево(с веточками) программа рассматривает как куб так? :) Це так и задумано.

Хорошо бы эту теорию в виде кода.
Ага, классно бы получилось :)

Кстати, как тебе мои пули с инерцией и автоудалением через 2 секунды ?
Да никак. Демку скачал. Тока чтой-то винда выдает, что exe"шник совсем не правильный exe"шник.


Кен   (2003-05-05 01:47:00) [7]

Alek Aaz ©
Коллизии нет. С ними похоже все проблемы и связаны. В моей демке ( http://www.triponavtika.narod.ru/game.html}, коллизии с домом по примеру boxedin"а неполучаются. Вернее всё глючно очень. Проще наверно дом обрисовать кубом, а актёра другим кубом, и проверять коллизии между кубами. И так обрисовывать кубами вообще все дома деревья, столбы и прочие объекты которые в игру вставляются. Геморойно конечно, но хоть более-менее нормально работает.


> 1. Кастаем луч из центра пули.
> 2. Определяем точку пересечения с плоскостью
> 3. Определяем кому принадлежит плоскость.(стена, окно, монстер,
> небо)
> 4. Генерим событие. С координатами.
> 5. Отрабатываем событие. Если монстер по координатам вычисляем
> процентовку унесенной жизни, стекло - разбиваем его в дребезги,
> стена - убираем пулю, рисуем в месте попадания дырдочку.
> Если в небо - убираем пульку.
> Это только теория.

Хорошо бы эту теорию в виде кода.
Пули должны лететь не моментально, а медленно, чтобы от них можно было увернуться. Иначе весь смысл игры теряется. Ничего не успеваешь, как уже убит.

И потом пуля - это TSphere, значит можно как то коллизии с ней обрабатывать, по примеру демки sphere. Может обрисовывать монстров кубами и проверять коллизии с пулями ? Голова и сердце - как бы один куб, смертельный. А всё остальное другой куб, не смертельный.

Кстати, как тебе мои пули с инерцией и автоудалением через 2 секунды ?
( http://www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1050597191&n=9)


Alek Aaz   (2003-05-04 06:13:00) [8]

Я уже вроде предлогал.
1. Кастаем луч из центра пули.
2. Определяем точку пересечения с плоскостью
3. Определяем кому принадлежит плоскость.(стена, окно, монстер, небо)
4. Генерим событие. С координатами.
5. Отрабатываем событие. Если монстер по координатам вычисляем процентовку унесенной жизни, стекло - разбиваем его в дребезги, стена - убираем пулю, рисуем в месте попадания дырдочку. Если в небо - убираем пульку.
Это только теория.
2Кен
Ты коллизии уже делал?


Наверх

Титульная страница Поиск, карта сайта Написать письмо