Nape space.step и постоянный импульс

У меня странная проблема. Если я перемещу тело в затылке каждый ENTER_FRAME (чтобы получить постоянное движение), используя вектор var vec:Vec2 = new Vec2(40,0); и применять его в качестве импульса с body.applyImpulse(vec);когда я "рендеринг" сцены делает space.step(1 / this._stage.frameRate);a в том же кадре и проследить в это время разницу движения в пикселях тела (по сравнению с его положением в предыдущем кадре), она не является постоянной для каждого кадра. В результате иногда позиция впереди, как если бы он генерировал 2 импульса в одном кадре, в то время как в следующем кадре не будет никаких импульсов или движения, и спрайт шаткий, что происходит случайным образом. Пространство не имеет гравитации (0,0);

Как получить хорошее постоянное движение для тела с импульсом в каждом кадре? Я пытался использовать body.position.setxy() но это побеждает цель моделирования...

Я немного поиграл с space.step(1 / this._stage.frameRate); и попробовал space.step(0.1 / this._stage.frameRate); Случайное дрожание исчезает, но теперь тело чуть-чуть дрожит на каждом кадре. Какие-нибудь мысли?

РЕДАКТИРОВАТЬ Используя теперь скорость вместо applyImpulse, все еще есть та же проблема

var old:Number = body.velocity.x;
body.velocity.x = dir.x*speed;
body.velocity.y = dir.y*speed;          
trace("DIFF", body.velocity.x-old);

Я запускаю это на каждом кадре, и разница положения на x тела:

DIFF 0.19997499999993806
DIFF 0.19997499999993806
DIFF 0.19997499999993806
DIFF 0.19997499999993806
DIFF 0.19997499999993806
DIFF 0.19997499999993806
DIFF 0.19997499999993806
DIFF 0.29992500624990726
DIFF 0.0999999999999659
DIFF 0.19997499999993806
DIFF 0.19997499999993806

Таким образом, время от времени результат скорости, применяемой к объекту, не является постоянной величиной, поскольку время от времени он "опережает" и, если можно так выразиться, "исправляет" себя.

1 ответ

Решение

Хорошо, нашел проблему, разместив, если кто-то еще сталкивается с той же проблемой:

space.step (1 / this._stage.frameRate, 1, 1)

исправляет проблему, так как у меня нет grativy

Другие вопросы по тегам