0

現在、加速を使用してプレイするゲームを開発しています。アイテムを動かす方法を見つけましたが、その「原点」、またはより正確には加速度計算の原点を変更しませんでした。

実際、私の画像は移動し、その中心は次のように定義されます。

imageView.center = CGPointMake(230, 240);

ご覧のとおり、横向きモードを使用しています。しかし、私は私のイメージが「プログレッシブ」に動くことを望んでいます。漸進的にとは、ゲームのLane Splitterのようなものです。

自転車が動いているのがわかります。たとえば、男性が完全に左側にいるとき、男性は iPad を水平に向けることができますが、自転車は画面の中央に戻ることはありません。解決策を試すと、画像が移動しますが、iPhone が水平になるとすぐに中央に戻るため、その方法がわかりません。理由はわかりますが、これを修正する方法がわかりません。

これは私の現在のコードです:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
    int i = 0;
    float current;
    if (i == 0)
    {
        imageView.center = CGPointMake(230, 240);
        current = 240;
        i++;
    }
    //try to modify the origin of acceleration
    imageView.center = CGPointMake(230, current - (acceleration.y*200));
    current = imageView.center.y;      
}
4

1 に答える 1

1

問題は、それiがローカル変数であるということです。あなたのコードはと同等です

imageView.center = CGPointMake(230, 240);
float current = 240;
imageView.center = CGPointMake(230, current - (acceleration.y*200));
[imageView center];

代わりに、次のようなものを試してください(起動時に画像ビューが正しい場所にあると仮定します)。

CGPoint current = imageView.center;
current.y -= acceleration.y*200;
imageView.center = current;

また、それacceleration.yはデバイスの座標空間にあることにも注意してください。UIが複数の向きをサポートしている場合は、インターフェースの回転を補正する必要があります。

于 2013-02-23T01:02:49.367 に答える