2

私は体を動かそうとしています:

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

妙にキーを離した時だけ体が動く。どうしてこれなの?説明書を見ましたがわかりません。

条件を削除して をapplyImpulse()呼び出すとStep()、ロケットは継続的にスラスターのアニメーションを表示しますが、実際には動きません。(ずっと上キーを押していたかのように。)

これを機能させるために本当に必要なのは、最初の引数が何をするかをよりよく理解することですapplyImpulse()

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

ベクトル内の 2 つの値の意味は何ですか?

更新これははるかにうまく機能します:

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

力ベクトルの 2 番目の値が負の場合、オブジェクトが画面上で上昇するように見えます。以前は、適用された衝動はそれを床に叩きつけるだけでした。キーを離したときに、インパルスが十分に強かった場合、キーが跳ね返ることがありました。

4

2 に答える 2

1

更新について: XNA では、カメラの位置に応じて、負の Y が上になります。ロケットを上昇させたい場合は、その方向に力を加える必要があります。

于 2010-02-15T16:34:23.590 に答える
0

リリースされたときにのみ移動する理由については意味がありません。別のキーボード入力がどこかに隠されているなど、他の場所に干渉するものは他にありませんか? 別のキーボード入力ステートメントが別のステートメントと競合して問題を引き起こしている可能性があるため、私は尋ねるだけです。

于 2010-02-13T21:34:12.090 に答える