Как заставить тело прыгать по экрану при наличии гравитации (Box2D/AndEngine)?

Я проделал немало поисков и нашел несколько предложений по антигравитационным объектам, но, похоже, ничего не работает. У меня есть физический мир, созданный гравитацией Земли. Пользователь касается экрана и создает спрайты/динамические тела. Затем они падают на дно экрана из-за гравитации. У меня есть еще один спрайт/тело, которое должно прыгать по экрану, игнорируя гравитацию и отскакивая от созданных спрайтов. Box2D AndEngine, похоже, не имеет setGravityScale(), поэтому я не могу установить гравитацию на 0. Проблема с созданием приспособлений, прикрепленных к кинематическому телу, чтобы определить, какая сторона сталкивается, заключается в том, что спрайт представляет собой круг (который не является большим). дело), ​​и я не совсем понимаю, как они работают. Я видел, что мог бы создать динамическое тело с постоянной силой, равной body.getMass()*SensorManager.Earth в направлении -y, и установить эластичность на 1, но невозможно получить идеально упругое столкновение. . У кого-нибудь есть идеальные предложения?


person rphello101    schedule 29.06.2012    source источник


Ответы (2)


Столкновения в Box2D никогда не бывают эластичными, в вычислениях есть небольшие ошибки, которые накапливаются, и тело теряет энергию. На ум приходят два подхода.

а) Вы можете установить эластичность немного выше 1

б) Вы можете отслеживать кинетическую энергию тела и, если она упадет ниже определенного порога, слегка подтолкнуть ее

person JohnEye    schedule 29.06.2012

JohnEye был прав, просто не так информативно, как мне хотелось. На аналогичный вопрос я ответил так: Как приложить силу к телу в направлении его движения (Box2D)?

person rphello101    schedule 29.06.2012