Android ゲームに適用する Sensor.TYPE_LINEAR_ACCELERATION に基づいて、新しい X 位置を計算しようとしています。
次の変数をすべて 0 に設定して開始します。
float newX=0;
float lastX0 =0;
float lastX1 =0;
私の時間変数は、最初は次のように設定されています。
float newTime = System.currentTimeMillis()/1000;
float lastTime0 = lastTime1 = newTime;
次に、私の On SensorChange は次のようになります。
public onSensorChanged(SensorEvent evt){
if (type == Sensor.TYPE_LINEAR_ACCELERATION) {
newTime = System.currentTimeMillis()/1000;
float oldDeltaTime = lastTime1-lastTime0;
float newDeltaTime = newTime- lastTime1;
if(oldDeltaTime<1)oldDeltaTime =1;
newX = lastX1 + ((lastX1 - lastX0)/oldDeltaTime)*newDeltaTime +(evt.values[0]/2)*(newDeltaTime*newDeltaTime);
lastX0 = lastX1;
lastX1 = newX;
lastTime0 = lastTime1;
lastTime1 = newTime;
Log.v("SENSOR MAN LINEAR", "new X:"+newX);
}
}
しかし、ログの newX が常に 0 になっています。
LinearAcceleration を正常に位置に変換した人はいますか? 誰かが私が間違っていることを理解できます..
私は中で泣いています!