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

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

Как проверить коллизии?


AndrewK ©   (2002-09-26 12:47:00) 

Доброго времени суток.

У меня есть проблемка.

Работаю с GLScene

Хочу сделать комнату, стены создаются динамически из прямоугольников, и поместить в нее несколько объектов из файлов .3ds. Надо сделать так, что бы эти объекты могли двигаться внутри комнаты (с этим проблем не возникло), но не могли выезжать за стены и проходить сквозь друг друга. Если обрабатываю при помощи Collision менеджера, то у меня возникает дерганье объектов. Как вообще можно решить такого рода задачку с использованием GLScene?

Может кто сталкивался с такой проблемой?


JrKI   (2003-03-03 20:48:00) [1]

Нуу... Могу предложить стенам ставить Tag > XXX

А затем проверяйте столкновение:
(Это набросок! Дорабатывайте!)
Если активировано перемещение Наш_Обьект то
Если Столкнуты Обьект Типа Стена (то есть тэг больше XXX) И Обьект Типа Наш_Обьект
то Не двигать Наш_Обьект в Направление иначе двигать.

P.S. Ничего, кроме комментов&алгоритмов на ящик не бросать !!!


SI-riuss   (2002-10-16 15:58:00) [2]

Слушай. В GLScene есть одна демка, не помню как называется, там шарик летает внутри 3ds объекта и отскакивает от него. Посмотри как там организовано это.


Ketmar   (2002-10-13 15:51:00) [3]

вообще coldet - очень интересная штука. у меня было вариантов 6 написано %-) остановился на Dynamic Plane Shifting BSP Traversal. впрочем, вам вряд ли подойдет, если много стен (надо динамически строить BSP-дерево). все зависит от того, насколько у вас большие комнаты...

Satanas Nobiscum! 13-Oct-XXXVII A.S.


Евгений Анатольевич   (2002-10-11 23:23:00) [4]

Может это и глупо, но я предложу:
Допустим самый большой радиус по X первого объекта равен 10, а второго 5. По Y 10 и 5 соответственно.
Смотрим:
if (Actor1.Position.X+15 >= actor2.Position.X) and
(Actor1.Position.Y+15 >= actor2.Position.Y) then
алгоритм расхождения.
end;


NailMan   (2002-09-28 01:16:00) [5]

Попробуй написать свой контроль столкновений или посмотри на http:\\www.gamedev.ru (.net). Может там чего найдешь. Вроже чего-то там такое видел.


AndrewK   (2002-09-27 16:08:00) [6]

Никто ничего посоветовать не может?


Наверх

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