ここに私のコードがあります:
float x;
@Override
public void onSensorChanged(SensorEvent event) {
if(event.values[0] > .2){
x = -1*(Math.round(event.values[0]));
centerx = centerx +(x*10);
}
else if(event.values[0] < -.2){
x = -1*Math.round(event.values[0]);
centerx = centerx +(x*10);
}
mCustomDrawableView.invalidate();
y = Math.round(event.values[1]);
if(event.values[2] > .4){
z = event.values[2];
}
}
加速度計を使用して垂直線を前後に動かしています。centerx は、垂直線の上端と下端です。デバイスを右に移動すると、線が左に移動し、物理的な世界にあるかのように、同じ位置にあるように見えるようにしようとしています (拡張現実を考えてください)。
SensorEvent から与えられた値を使用して、中心線を移動するための演算を行っています。唯一の問題は、アドバイスを 5 のように動かすと加速度計の値が上がるが、動きを止めると 4 から 3、2 から 1 から 0 に減少することです。そのため、線は横に跳ね返って元の中心に戻ります。この「バウンス」を取り除き、ラインを新しい位置にとどめる方法を探しています。何か案は?