次のコードを使用して、加速度計の値で画面を上下に移動するように設定されたUIImageViewがあります。
ship.center = CGPointMake(ship.center.x, ship.center.y+shipPosition.y);
shipPosition
以下を使用してaccelerometerDidAccelerateメソッドで設定されたCGPointはどこにありますか。
shipPosition.y = acceleration.x*60;
明らかにこれはうまく機能します、それは非常に簡単です。同じように単純なことをしようとすると、問題が発生します。画像の回転を加速度に応じて変化させます。私はこれを使用して行います:
ship.transform = CGAffineTransformMakeRotation(shipPosition.y);
何らかの理由で、これは非常に奇妙なことを引き起こします。つまり、mainメソッドが呼び出されるたびに、画像が元の場所にスナップバックします。画像が本来あるべき位置に移動するフレームを見ることができますが、すぐに元に戻ります。
この問題は、回転線が入っている場合にのみ発生し、コメントアウトすると正常に機能します。ここで何が起こっているのかわかりません。さまざまなアプリでこれを何度も実行しましたが、このような問題は発生しませんでした。実際、私は自分が作成した別のアプリからコードをコピーしました。
編集:
私が本当に混乱しているのは、回転角度を加速から船の位置に変更するときです。
ship.transform = CGAffineTransformMakeRotation(ship.center.y/10);
これを行うと、船は実際には加速度計に基づいて回転しますが、移動しません。これはship.center.y
、船の位置が変化していることを意味するため、クレイジーですが、そうではありません!!