我正在写一个精灵,以恒速运动的身体。因此,它是这样的时间步长:如何在Box2D中改变方向时更新速度?
const v = body.getLinearVelocity();
v.normalize();
body.setLinearVelocity(v * speed);
然后,我要听的mouseClicked事件和精灵将相应地移动到新的方向。
这是我在的mouseClicked事件处理程序正在做的:
const point = /* new Point on screen */
const rotation = Math.atan2(point.y - player.y, point.x - player.x);
body.setTransform(body.getPosition(), rotation);
但是当我点击鼠标我的精灵不会转向新的方向,它在相同的恒定速度进入到旧方向。我可以看到身体的角度在每个步骤都会改变。它只是不会去新的方向。
如何在Box2D中打开我的精灵并将其移向新的方向?
对不起,我仍然不明白你的意思是“束”到新的变换。我明白,当我希望它逐渐移动到一个速度时,最好使用'applyForce()'/'applyImpulse()',但我只是希望它以恒定的速度移动,开始并永远不停止或开始。我的问题是如何在保持原有速度的同时向新的方向发展。 – newguy
也许不是说“梁”,而应该说“传送”。 'body.setTransform'就像拿起身体并将其放置在新的位置。 –