2011-11-04 95 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? –