0

我有一个奇怪的问题。如果我每次使用向量在颈背上移动一个身体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

因此,每隔一段时间,施加到对象上的速度的结果不是恒定的,因为它偶尔会呈现“领先”并“纠正”自己,如果我可以说的话。

4

1 回答 1

0

好的,找到了问题,如果其他人面临同样的问题,请发布:

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

纠正了这个问题,因为我没有报酬

于 2014-03-06T16:08:12.677 回答