Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] К телу применена сила. Как погасить ее при столкновении с препятствием? (http://www.flasher.ru/forum/showthread.php?t=195395)

PaladinNew 06.03.2013 02:48

К телу применена сила. Как погасить ее при столкновении с препятствием?
 
К телу применена сила. Как погасить ее при столкновении с препятствием?

Установил эластичность = 0 - нужного эффекта нет.

Вижу следующее:

Тело сталкивается с статичным объектом (препятствие), тело отбрасывается от препятствия, а потом снова с той же силой летит к препятствию. Хотя второй раз силу к объекту я не прикладывал.

Я проверяю код на ошибки, если можете дать совет, буду рад!

Заранее спасибо.

caseyryan 06.03.2013 11:37

Взять текущую скорость тела, и применить к телу импульс той же величины, но с противоположным знаком.
Это работает. Но сразу оговорюсь, что резкой остановки без просчета физики не будет. Тела все равно друг на друга слегка повлияют.
Я тоже как-то задавался этим вопросом, перепробовал кучу вариантов, и этот единственный более менее нормальный. На нем и остановился.

Asfel 06.03.2013 20:52

Ну или при столкновении просто ускорение в 0 поставить?:)

PaladinNew 06.03.2013 23:37

caseyryan, спасибо! небольшой контакт это даже хорошо, попробую Ваш пример! Как я понял, нужна линейная скорость - GetLinearVelocity. соответственно, если я применял не импульс, а силу, то и обратное действие - тоже применяю силу, так?
Asfel - Как установить ускорение? может быть, затухание поставить - SetLinearDamping?

caseyryan 07.03.2013 09:43

У меня в игре тела вот так останавливаются:
Код AS3:

var negativeImpulse:b2Vec2 = _tankBody.GetLinearVelocity().Copy(); 
negativeImpulse.NegativeSelf();
_tankBody.ApplyImpulse(negativeImpulse, _tankBody.GetTransform().position);


PaladinNew 09.03.2013 21:48

caseyryan - спасибо большое!!!

Добавлено через 1 час 46 минут
заработало, действительно остановились! причем только с ApplyImpulse, как в Вашем примере,удалось добиться такого эффекта - с ApplyForce (я начинал двигать объект этим методом) такого не получилось.


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

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