我有两个问题:
1.是否可以检索b2Body的当前X坐标?我知道API GetPosition,但这不够具体,我需要专门的X坐标
2.是否可以在我的UIAccelerometer委托方法中为我的特定b2Body添加重力?
我要做的是使用Apply Force将带有Box2D重力的当前UIAccelerometer输入的b2Body移动到一行。 这是我到目前为止,没有人知道如何将#1 +#2纳入这一行?:
body->ApplyForce(b2Vec2(accelX*100, -30.0f), body->GetPosition());
谢谢!
EDIT1:
感谢您回答这些问题,为我解决了这个问题!
这给我留下了3个问题:
的 1 即可。现在我明白了如何获得b2Body的x坐标,我该怎么设置呢?
它会是这样的吗?
body->GetPosition().x = 30;
2 即可。使用这些x坐标,它是否与我使用UIKit正确的X坐标相同?我知道UIKit框架的东西不同我只想确保如果我在UIKit中做了类似的东西,它会输出相同的X坐标,这是正确的吗?
答案 0 :(得分: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());
答案 1 :(得分:2)
1)1)body-> GetPosition()。x
1)2)施加力或改变世界的引力。
2)1)您使用SetPosition(b2Vec2)。
2)2)Box2d坐标除以PTM_RATIO,0,0位于box2d的左下角,左上角为UIKit。