我正在尝试移动身体:
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());
看起来如果力向量中的第二个值是负数,物体就会在屏幕上升起。之前,施加的脉冲只是将它撞到地板上。当我松开钥匙时,它有时会弹回来,如果冲动足够强的话。