1

2 つの質問があります:
1. b2Body の現在の X 座標を取得することは可能ですか? 私は API GetPosition を知っていますが、それは十分に具体的ではありません。具体的には X 座標が必要です。
2. UIAccelerometer デリゲート メソッドで特定の b2Body に重力を追加することは可能ですか?

私がやろうとしているのは、Apply Force を使用して、現在の UIAccelerometer 入力で Box2D 重力を使用して b2Body を 1 行で移動することです。これは私がこれまでに持っているものです。この行に #1+#2 を組み込む方法を知っている人はいませんか?:

body->ApplyForce(b2Vec2(accelX*100, -30.0f), body->GetPosition());

ありがとう!

Edit1:これらの質問に答えてくれてありがとう。これにより、さらに 3 つの質問が残り
ます。b2Body の x 座標を取得する方法を理解したところで、どのように設定すればよいでしょうか?
こんな感じでしょうか。

body->GetPosition().x = 30;

2 . これらの x 座標を使用すると、UIKit を正しく使用していた場合と同じ X 座標になりますか? UIKit のフレームが異なることは知っていますが、UIKit で同様のことを行った場合、同じ X 座標が出力されることを確認したいだけです。それは正しいですか?

4

2 に答える 2

4

1) への回答

b2Vec pos = body->GetPosition();
float x = pos.x;
// do whatever you need to do with x

書くこともできます

float x = body->GetPosition().x;

2) への回答

UIAccelerometer didAccelerate メソッドから必要な値をインスタンス変数に格納します。たとえば、accelX:

accelX = acceleration.x;

ワールド更新メソッドでは、これらの値を使用して、必要な方法で力を計算します。次に、投稿したように力を適用します。

body->ApplyForce(b2Vec2(accelX*100, -30.0f), body->GetPosition());
于 2011-11-04T23:07:09.480 に答える
2

1) 1) body->GetPosition().x

1) 2) 力を適用するか、世界の重力を変更します。

2) 1) SetPosition(b2Vec2) を使用します。

2) 2) Box2d 座標は PTM_RATIO で除算され、0,0 は box2d の場合は左下ですが、UIKit の場合は左上になります。

于 2011-11-05T23:18:38.310 に答える