2012-04-17 1 views
1

У меня есть b2Body, который направляется к верхней части экрана с неизвестным «linearVelocity.y». Как я могу заставить linearVelocity замедляться и быть 0, когда он находится чуть ниже вершины и позволяет взять гравитацию?Как замедлить ход b2Body к краю экрана пошагово, где скорость равна 0, когда она достигает края?

  • Я пробовал LinearDamping, но объект не всегда замедляется, прежде чем покинуть верхнюю часть экрана.
  • Я также попытался использовать ApplyImpulse с -linearVelocity.y, когда object.position >= screen.Height - object.contentSize.height, но это, кажется, не замедляет его в достаточно гладкой манере.

Любая помощь будет потрясающей!

Edit: Пример этого может быть ограничением высоты в игре «Tiny Wings»

ответ

0

Вместо применения всего отрицательного импульса в одном кадре ... обнаружить, когда ваше тело прошло определенную высоту, и начните медленно уменьшать линейную скорость на небольшое количество в течение нескольких кадров, пока linearVelocity не достигнет 0 ... в этот момент вы можете просто позволить гравитации захватить верх.

+0

Я догадываюсь, что мой вопрос сейчас ... Сколько мне нужно, чтобы уменьшить его каждый кадр, так как linearVelocity.y может быть разной скоростью разницы? Спасибо за ответ! –

+0

Вы можете поэкспериментировать с разными объемами, чтобы узнать, что выглядит правильно, но если бы я был вами, я бы уменьшал скорость, исходя из того, как быстро она проходила, когда она проходила, изначально прошла ваш порог и как далеко за порог, который он сейчас находится. .. –

 Смежные вопросы

  • Нет связанных вопросов^_^