Я пытаюсь переместить тело:
if (ks.IsKeyDown(Keys.Up)) {
rocket.ApplyImpulse(new Box2DX.Common.Vec2(0, 30f), rocket.GetPosition());
}
Как ни странно, тело двигается только тогда, когда клавиша отпущена . Почему это? Я смотрел на руководство , но не могу понять.
Когда я удаляю условное выражение и просто вызываю applyImpulse()
в Step()
, ракета постоянно имеет анимацию движителей, но фактически никогда не движется. (Как будто я все время удерживал клавишу «Вверх».)
Похоже, что мне действительно нужно, чтобы эта работа лучше понимала, что делает первый аргумент applyImpulse()
:
new Box2DX.Common.Vec2(0, 30f)
Какое значение имеют два значения в векторе?
ОБНОВЛЕНИЕ Это работает намного лучше:
rocket.ApplyImpulse(new Box2DX.Common.Vec2(0, -1), rocket.GetPosition());
Похоже, если второе значение в векторе силы отрицательно, объект поднимается на экран. Раньше применяемый импульс просто ударял его об пол. Когда я отпускал ключ, он иногда приходил в норму, если бы импульс был достаточно сильным.