2016-06-01 3 views
0

私はAndroidスタジオを使ってLibGDXゲームを作っています。エイリアンUFOが入ってくる小惑星を避けなければならず、UFOは加速度計データを使って移動します。携帯電話の背面が床と平行になるように電話が開催されているが、そのような位置はしばらく後でプレーする不快得ることができたときに異なる位置にある携帯電話の加速度計データを調整する方法。

//Gets and smoothens accelerometer data. Values for x and y are switched because the game is played in landscape mode. 
    currentAccelerometerX = Gdx.input.getAccelerometerY(); 
    currentAccelerometerX = currentAccelerometerX * alpha + lastAccelerometerX * (1 - alpha); 
    currentAccelerometerY = Gdx.input.getAccelerometerX(); 
    currentAccelerometerY = currentAccelerometerY * alpha + lastAccelerometerY * (1 - alpha); 

    //Moves the alien 
    alien.alienX += (currentAccelerometerX * 5); 
    alien.alienY -= (currentAccelerometerY * 5); 

    lastAccelerometerY = currentAccelerometerY; 
    lastAccelerometerX = currentAccelerometerX; 

このコードは動作します。私はデバイスの現在の回転を考慮に入れて、それに応じてUFOの動きをどのように調整できるのだろうと思っていました。

この問題は外出先のY位置(携帯電話のx加速度計データを意味する)のみたいです(この値は、横長モードで再生されているので値が切り替わります)。電話機を床に角度を持って置くと、UFOは画面の下端付近にとどまります。

答えて

0

JollyGoodSir、新しいゲームが始まると、加速度計の現在の状態のスナップショットを撮り、それを基点として設定します。今度は加速度計の状態を調べて変化がどのように変化しているのかを確認し、それをデルタとしてこの基本値と比較します。これで、ゲームが開始されたときにデバイスを保持していた位置にゲームがキャリブレートされます。それは働いていた:-)

+0

幸せな日!私がしなければならなかったのは、AccelerometerXとAccelerometerYの開始値を作成し、それらから現在のAccelerometer値を減算することでした。 –

関連する問題