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