2

我有一个 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);
4

1 回答 1

0

在这篇文章中查看答案 - Cocos2D 游戏中基于加速度计的运动

只需使用 cocos2D sprite 进行移动,并将 sprite 位置的值用于 box2D 身体。

于 2012-11-18T06:34:08.773 回答