Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] Пролетание тел друг через друга, как побочный эффект RevoluteJoint (http://www.flasher.ru/forum/showthread.php?t=151039)

1g0rrr 21.02.2011 18:33

Пролетание тел друг через друга, как побочный эффект RevoluteJoint
 
Вложений: 1
Добрый день. Задача такая: есть снаряд, который на некоторой скорости врезается в стену. В момент врезания - снаряд должен привязаться к этой стене с помощью revoluteJoint-a и при этом остаться на месте столкновения. Задача - достаточно простая, но при реализации - возникает проблема. Если часто выстреливать этот снаряд в стену, то он начинает сквозь неё пролетать. При этом, если снаряд не привязывать джоинтом, то пролёта сквозь стену - не наблюдается.

По документации, при обьединении тел джоинтом эти тела перестают сталкиваться. И действительно, если я ставлю джоинту collideConnected = true, пролёта - нет.

Но я ведь удаляю джоинт! Следовательно ожидаю, что и тела должны снова сталкиваться правильно. Никак не могу обойти этот глюк. Подскажите пожалуйста, почему такое поведение может возникать?

Набросал тестовую сцену, чтобы можно было воспроизвести глюк. Исходник - во вложении. Для повтора бага нужно клатсать мышью где-то 3-5 раз в секунду.

Alex Lexcuk 22.02.2011 06:07

Может надо после столкновения делать не жоинт, а делать новую стену, где снаряд будет приклеен намертво.

1g0rrr 22.02.2011 12:56

Дело в том, что снаряд должен продолжать крутится вокруг точки. Тоесть как раз джоинт и нужен. Мне пришло в голову решение проблемы: пересоздавать снаряд заново после каждого выстрела. Так на него не будет действовать побочный эффект прошлых джоинтов. Но это, к сожалению, "костыль".


Часовой пояс GMT +4, время: 15:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.