ビューがlandscapeLeftにロックされたbox2dの世界があります。電話を左右に傾けて体を動かそうとしていますが、これは現在機能しています。携帯電話を横向きに傾けてレベルを開始すると問題が発生します。この状態では重力がかからなくなり、動いているはずの身体が静止している。これは摩擦の問題だと思います (移動する身体と移動するプラットフォームの両方が両方とも摩擦 0 ですが)、プラットフォームの反発を 1.0 に設定すると、身体は 1.0 にかかっているためです (つまり、身体は現在、ほとんどない) 重力は常に正しく適用されます。これは、ボディが移動するプラットフォームが 1 つしかないため、ボディがタイルの角で動かなくなるという box2d の問題ではありません。また、プラットフォームのどこにいても動きません。これが私の加速コードです。
- (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);