2011-11-04 136 views
1

我有2個問題:
1.是否有可能檢索b2Body的當前X座標?我知道API GetPosition,但這不夠具體,我特別需要X座標。
2.是否可以在我的UIAccelerometer委託方法中爲我的特定b2Body添加重力?Mixing Box2D加速度傳感器+重力?

我想要做的就是使用應用力在一行中移動帶有Box2D重力的當前UIAccelerometer輸入的b2Body。 這是我到目前爲止,沒有人知道我怎麼可以將#1 +#2到這條線?:

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

謝謝!

編輯1: 感謝您回答這些問題,爲我解決了這個問題! 這給我留下了3個更多的問題:
。現在我知道如何獲得b2Body的x座標,我將如何設置它?
會是這樣的嗎?

body->GetPosition().x = 30; 

。有了這些x座標,它就和我使用UIKit時的X座標一樣嗎?我知道UIKit框架的東西不同,我只是想確保如果我在UIKit中做了類似的事情,它會輸出相同的X座標,這是否正確?

回答

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()); 
+0

謝謝!你能檢查我在原始郵政中編輯的編輯1嗎? –

2

1)1)身體 - >爲getPosition()X

1)2)無論施力或改變世界的重力。

2)1)您使用SetPosition(b2Vec2)。

2)2)Box2d座標除以PTM_RATIO,0,0在box2d的左下角,UIKit的左上角。

+0

因此,如果我想檢索X座標UIKit風格但使用Box2D,我將不得不將X座標除以PTM比率? 也是這樣的2.1? –