我有一个 box2d 世界,其视图锁定在 LandscapeLeft 中。我正在尝试通过向左或向右倾斜手机来移动身体,目前正在工作。当手机倾斜在 LandscapeRight 中启动关卡时,我遇到了问题。在这种情况下,重力不再被施加,我应该移动的身体静止不动。我相信这是一个摩擦问题(即使我要移动的身体和要移动的平台都是 0 摩擦),因为当我将平台的恢复设置为 1.0 时(所以我的身体现在正在很少到位)重力始终正确应用。这不是 box2d 问题,因为我的身体只有 1 个平台可以让我的身体继续移动,而且无论它在平台上的哪个位置,它都不会移动,因为我的身体会卡在瓷砖的角落。这是我的加速代码。
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate (UIAcceleration*)acceleration
{
if (acceleration.x < 0) {
b2Vec2 gravity(-acceleration.y * 15, -8);
world->SetGravity(gravity);
}
}
这是我的初始化代码
// Define the gravity vector.
b2Vec2 gravity;
gravity.Set(0.0f, -10.0f);
// Do we want to let bodies sleep?
// This will speed up the physics simulation
bool doSleep = true;
// Construct a world object, which will hold and simulate the rigid bodies.
world = new b2World(gravity, doSleep);
world->SetContinuousPhysics(true);