0

加速度計から(X軸とY軸で)値を取得した後、この値をxSpeed変数とySpeed変数に割り当て、この値に従ってボールを移動します。問題は、アクティビティの開始時に、加速度計の値が何であれ、xSpeedとySpeedを0(電話が移動するまでボールは移動しない)にしたいということです。このようなキャリブレーションをしたいと思います。

Y軸についてはこれを試しましたが、電話のすべての開始位置で機能していません。

ball.setYSpeed(ySpeed-startAccelY);

ここで、startAccelYはY軸上の加速度計の開始値であり、ySpeedには新しい値が割り当てられます。

4

2 に答える 2

2

元の開始値を取得して、現在の読み取り値から差し引くことをお勧めします。

たとえば、コードに変数があります。

float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer

次に、現在の加速度計の読み取り値をボールに適用すると、initialPosition 値を差し引いてボールを動かすことができます。このように、ボールは最初に失速したように見えます。

これが役立つことを願っています。

于 2012-08-15T16:25:37.690 に答える
1

TYPE_ACCELEROMETERセンサーを使用していると思いますか?代わりに TYPE_LINEAR_ACCELERATION センサーを使用してみてください。センサーの読み取り値から重力を自動的に差し引くため、電話を動かさないと accln は 0 (っぽい) のままです。

[編集] Api 9 + ただし。

于 2012-08-15T16:27:24.200 に答える