Box2d SetLinearVelocity не работает с гравитацией

У меня есть тело (игрок) в моем мире box2d.

Всякий раз, когда я пытаюсь установить его скорость x (каждые 2 секунды или что-то еще), и он падает из-за гравитации, он дрожит вверх и вниз.

Я также пытался установить его скорость по оси Y равной гравитации (-30.0f), но тогда получилось еще хуже.

Тывм.


person Daniel says Reinstate Monica    schedule 16.02.2011    source источник


Ответы (1)


Это потому, что ваш игрок создан как динамическое тело. Таким образом, гравитация применяется к игроку на каждом шаге симуляции, заставляя его/ее изменять скорость.

Поставь свой плеер b2_kinematicBody - тогда к нему не будут прилагаться силы. Если вы по-прежнему хотите, чтобы игрок был динамичным, применяйте силу -playerMass*gravityVector на каждом шаге (или установите для параметра autoClearForces в b2World значение false и примените силу один раз), чтобы убрать силу гравитации.

person Andrew    schedule 16.02.2011