2

我正在尝试移动身体:

if (ks.IsKeyDown(Keys.Up)) {
    rocket.ApplyImpulse(new Box2DX.Common.Vec2(0, 30f), rocket.GetPosition());
}

奇怪的是,只有松开按键时身体才会移动。为什么是这样?我一直在看手册,但无法弄清楚。

当我删除条件时,只需applyImpulse()调用 in Step(),火箭就会不断地显示推进器的动画,但实际上并没有移动。(好像我一直按住向上键一样。)

看起来我真正需要的是更好地理解第一个参数的applyImpulse()作用:

new Box2DX.Common.Vec2(0, 30f)

向量中的两个值的意义是什么?

更新这工作得更好:

rocket.ApplyImpulse(new Box2DX.Common.Vec2(0, -1), rocket.GetPosition());

看起来如果力向量中的第二个值是负数,物体就会在屏幕上升起。之前,施加的脉冲只是将它撞到地板上。当我松开钥匙时,它有时会弹回来,如果冲动足够强的话。

4

2 回答 2

1

关于您的更新:在 XNA 中,根据您放置相机的方式,负 Y 向上。如果你想让火箭上升,你必须向那个方向施加一个力。

于 2010-02-15T16:34:23.590 回答
0

这对于为什么它只在它被释放时才移动是没有意义的,在其他地方没有其他东西会干扰它,比如隐藏在某个地方的另一个键盘输入吗?我只问,因为它可能是另一个键盘输入语句与另一个冲突并导致问题。

于 2010-02-13T21:34:12.090 回答