我有一个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);
答案 0 :(得分:0)
在这篇文章中查看答案 - Accelerometer based movement in Cocos2D game
只需使用cocos2D精灵进行移动,并将精灵位置的值用于box2D体。