Форум: "Игры";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизGLScene Проверка коллизий между пулями и монстрами. Как сделать ? Найти похожие ветки
← →
Кен (2003-05-04 04:40) [0]И как сделать, чтобы быстрее работало ? Проверять в лоб, то есть все пули на всех монстров - наверно слишком медленно получится. А как иначе ?
Другой вопрос - как оценивать повреждения монстрам ? Там в голову - смерть. В руку - ранение. В сердце - смерть. Как это сделать ?
← →
Alek Aaz (2003-05-04 06:13) [1]Я уже вроде предлогал.
1. Кастаем луч из центра пули.
2. Определяем точку пересечения с плоскостью
3. Определяем кому принадлежит плоскость.(стена, окно, монстер, небо)
4. Генерим событие. С координатами.
5. Отрабатываем событие. Если монстер по координатам вычисляем процентовку унесенной жизни, стекло - разбиваем его в дребезги, стена - убираем пулю, рисуем в месте попадания дырдочку. Если в небо - убираем пульку.
Это только теория.
2Кен
Ты коллизии уже делал?
← →
Кен (2003-05-05 01:47) [2]Alek Aaz ©
Коллизии нет. С ними похоже все проблемы и связаны. В моей демке ( http://www.triponavtika.narod.ru/game.html}, коллизии с домом по примеру boxedin"а неполучаются. Вернее всё глючно очень. Проще наверно дом обрисовать кубом, а актёра другим кубом, и проверять коллизии между кубами. И так обрисовывать кубами вообще все дома деревья, столбы и прочие объекты которые в игру вставляются. Геморойно конечно, но хоть более-менее нормально работает.
> 1. Кастаем луч из центра пули.
> 2. Определяем точку пересечения с плоскостью
> 3. Определяем кому принадлежит плоскость.(стена, окно, монстер,
> небо)
> 4. Генерим событие. С координатами.
> 5. Отрабатываем событие. Если монстер по координатам вычисляем
> процентовку унесенной жизни, стекло - разбиваем его в дребезги,
> стена - убираем пулю, рисуем в месте попадания дырдочку.
> Если в небо - убираем пульку.
> Это только теория.
Хорошо бы эту теорию в виде кода.
Пули должны лететь не моментально, а медленно, чтобы от них можно было увернуться. Иначе весь смысл игры теряется. Ничего не успеваешь, как уже убит.
И потом пуля - это TSphere, значит можно как то коллизии с ней обрабатывать, по примеру демки sphere. Может обрисовывать монстров кубами и проверять коллизии с пулями ? Голова и сердце - как бы один куб, смертельный. А всё остальное другой куб, не смертельный.
Кстати, как тебе мои пули с инерцией и автоудалением через 2 секунды ?
( http://delphimaster.net/view/9-1050597191/ )
← →
Alek Aaz (2003-05-05 13:24) [3]Коллизии нет.
Вообще обязана быть. Или что-то неправильно сделал, или скорость пули слишком большая. Уменьши скорость пули.
В моей демке ( http://www.triponavtika.narod.ru/game.html}, коллизии с домом по примеру boxedin"а неполучаются. Вернее всё глючно очень. Проще наверно дом обрисовать кубом, а актёра другим кубом, и проверять коллизии между кубами. И так обрисовывать кубами вообще все дома деревья, столбы и прочие объекты которые в игру вставляются. Геморойно конечно, но хоть более-менее нормально работает.
Не понял ничего ... Ты хочешь сказать, что когда объект как boxedin, то дерево(с веточками) программа рассматривает как куб так? :) Це так и задумано.
Хорошо бы эту теорию в виде кода.
Ага, классно бы получилось :)
Кстати, как тебе мои пули с инерцией и автоудалением через 2 секунды ?
Да никак. Демку скачал. Тока чтой-то винда выдает, что exe"шник совсем не правильный exe"шник.
← →
Кен (2003-05-06 01:20) [4]Alek Aaz ©
> Коллизии нет.
> Вообще обязана быть.
Я имел ввиду, что не делал пока. Пока разбираюсь только с ними. Иногда действительно пули проскакивают мимо монстров, когда fps слишком маленький.
> Не понял ничего ... Ты хочешь сказать, что когда объект
> как boxedin, то дерево(с веточками) программа рассматривает
> как куб так? :) Це так и задумано.
Дом - он квадратный. По его размерам можно сделать невидимый куб в GLScene и проверять с этим кубом коллизии. У дерева в области земли - ствол идущий вертикально вверх. По размерам ствола рисуем прямоугольник. И проверяем коллизии с ним. Это намного быстрее будет работать, чем проверять коллизи с FreeForm и каждым её треугольником.
Куба - это всего 12 треугольников.
> Да никак. Демку скачал. Тока чтой-то винда выдает, что exe"шник
> совсем не правильный exe"шник.
Откомпилируй заново. Исходник же прилагается. У меня всё работает. Пули летят давольно красиво. Веером. Особенно когда откуда нибудь сверху полишь.
← →
Alek Aaz (2003-05-06 03:59) [5]дерева в области земли - ствол идущий вертикально вверх. По размерам ствола рисуем прямоугольник.
Це и есть всякие "B,Q - деревья". Читал где-то.
Это намного быстрее будет работать, чем проверять коллизи с FreeForm и каждым её треугольником.
Вполне может быть. Не проверял.
Откомпилируй заново
Ну нету па работе Delphi, нету ... :(
← →
Кен (2003-05-06 05:22) [6]> Ну нету па работе Delphi, нету ... :(
А где есть ? Как же ты пишешь на нём тогда ?
← →
Alek Aaz (2003-05-07 03:58) [7]Дома есть. Правда дома нет :) (съезжаю я от родичей)
Так что пока никак не пишу :)
← →
Кен (2003-05-07 06:11) [8]Alek Aaz ©
Сделал я коллизии пуль и монстров. Встроенными в GLScene средствами. В общем давольно просто оказалось. И тормозят не столько коллизии, сколько модели монстров.
Теперь можно по ним стрелять и они дохнут. Только вот вооружить их пока неполучилось. Незнаешь, где можно найти md2-модели животных ? Тигров там, быков из Сэма, крокодилов, кенгуру ?
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c