Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Проникновение объектов друг в друга   Найти похожие ветки 

 
Sam Stone ©   (2006-03-19 17:43) [0]

Всем доброго времени суток. Такой вопрос: имеется пара объектов (используется GLScene), один тащится мышкой. Имеем событие с CollisionManager при "столкновении" этих объектов. Не могу додуматься, как сделать так, чтобы один объект не "натаскивался" на другой. Т.е. просто упирался как в стену, но не прилипал (единственное, чего добился )).


 
Fosgen   (2006-03-20 14:03) [1]

Есть такие параметры у объекта TGLFreeForm -  BoundingBox, BoundingSphere - поэкспериментируй с ними. Если непонятно - они определяют габариты объекта. Догадываешься - зачем?


 
Sam Stone ©   (2006-03-20 15:36) [2]

т.е. предлагаешь двигать объект в противоположную сторону, пока IntersectAABBsAbsolute() = true?


 
Yegorchic ©   (2006-03-21 23:18) [3]

Дык наверное, просто проверяешь (в OnMouseMove), нашёл ли один объек на другой, если нашёл - то не выволнять процедуру перемещения (т.е. просто Exit написать).


 
Sam Stone ©   (2006-03-22 19:03) [4]

Да, действительно, простой выход, но ведь вся фигня в том, что объекты уже проникли друг в друга. И потом его нельзя будет оттащить.


 
Yegorchic ©   (2006-03-22 23:57) [5]

А Вы проверяйте в OnMouseMove найдёт ли один объект на другой в новых координатах - если найдёт, то не надо выполнять операцию перетаскивания.
Т.е. новые координаты получить (но не перемещать объект) и проверить столкновение будет ли...


 
Sam Stone ©   (2006-03-23 16:49) [6]

Не таскать объект не подходит. Но это предположение натолкнуло на мысль: стал хранить две последние координаты, грубо говоря последнее и предпоследнее положение объекта. Если срабатывает событие на столкновение, то отодвигаю в цикле пока не исчезнет столкновение на разницу между координатами. Цикл пришлось прилепить, т.к. если резко "натянуть" 1 объект на другой, он не слезет ))) Минус - таскаемый объект дрожит, когда упирается в другой ) Но может чего-нибудь придумаю.



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
9-1143029770
!Trinix
2006-03-22 15:16
2007.02.04
Ошибка макса


4-1158843222
laronov
2006-09-21 16:53
2007.02.04
Как получить данные из чужого DBGrid а


8-1148391631
diman_1978
2006-05-23 17:40
2007.02.04
увеличение размера картинки через TSampleGrabber


2-1168999905
Евгенич
2007-01-17 05:11
2007.02.04
Что значит "функция возвращает"?


2-1169037394
vitv
2007-01-17 15:36
2007.02.04
Результат запроса