![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проникновение объектов друг в друга [Delphi]
Sam Stone © (2006-03-19 17:43:00)Всем доброго времени суток. Такой вопрос: имеется пара объектов (используется GLScene), один тащится мышкой. Имеем событие с CollisionManager при "столкновении" этих объектов. Не могу додуматься, как сделать так, чтобы один объект не "натаскивался" на другой. Т.е. просто упирался как в стену, но не прилипал (единственное, чего добился )).
Sam Stone (2006-03-23 16:49:00) [1]Не таскать объект не подходит. Но это предположение натолкнуло на мысль: стал хранить две последние координаты, грубо говоря последнее и предпоследнее положение объекта. Если срабатывает событие на столкновение, то отодвигаю в цикле пока не исчезнет столкновение на разницу между координатами. Цикл пришлось прилепить, т.к. если резко "натянуть" 1 объект на другой, он не слезет ))) Минус - таскаемый объект дрожит, когда упирается в другой ) Но может чего-нибудь придумаю.
Yegorchic (2006-03-22 23:57:00) [2]А Вы проверяйте в OnMouseMove найдёт ли один объект на другой в новых координатах - если найдёт, то не надо выполнять операцию перетаскивания.
Т.е. новые координаты получить (но не перемещать объект) и проверить столкновение будет ли...
Sam Stone (2006-03-22 19:03:00) [3]Да, действительно, простой выход, но ведь вся фигня в том, что объекты уже проникли друг в друга. И потом его нельзя будет оттащить.
Yegorchic (2006-03-21 23:18:00) [4]Дык наверное, просто проверяешь (в OnMouseMove), нашёл ли один объек на другой, если нашёл - то не выволнять процедуру перемещения (т.е. просто Exit написать).
Sam Stone (2006-03-20 15:36:00) [5]т.е. предлагаешь двигать объект в противоположную сторону, пока IntersectAABBsAbsolute() = true?
Fosgen (2006-03-20 14:03:00) [6]Есть такие параметры у объекта TGLFreeForm - BoundingBox, BoundingSphere - поэкспериментируй с ними. Если непонятно - они определяют габариты объекта. Догадываешься - зачем?