1

我有 2 个问题:
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 坐标,对吗?

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 方法所需的任何值存储在实例变量中。例如加速X:

accelX = acceleration.x;

在您的世界更新方法中,只需使用这些值以您需要的任何方式计算力。然后像您发布的那样施加力:

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

1) 1) 身体->GetPosition().x

1) 2) 要么施加力,要么改变世界的重力。

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

2) 2) Box2d 坐标除以 PTM_RATIO,0,0 在 box2d 的左下角,但在 UIKit 的左上角。

于 2011-11-05T23:18:38.310 回答