2015-12-12 48 views
0

我一直在尝试很长时间,试图弄清楚为什么我的游戏在不同设备上播放的方式略有不同(即:某些设备似乎比其他设备对于加速度计更敏感) 。正常化加速度计数据

我刚刚注意到,在倾斜设备和记录输出时,在一台设备上,输出似乎在-9.5和+ 9.5之间,在另一个设备上,似乎在-10.7到+10.7之间。
我使用这个返回的数据来移动我的精灵。

@Override 
public void onSensorChanged(SensorEvent event) {   
    tiltAmount = event.values[device_rotation]; 
    Log.v("Tag", "Value: " + tiltAmount); 
} 

在上面的代码例如,如我倾斜装置向相反的极端(90°逆时针和顺时针旋转90°),我发现了上述范围。

我希望这些数据在整个设备上保持一致。

有没有人有任何想法我可以规范化它?

回答

0

看起来好像你有极端值定义。在这种情况下,您可以将给定值除以总动态范围以获得标准化值:

NormalizedValue = x/(Highest - Lowest) 
+0

嗨@Learner,只是一些事情,您给出的答案(如果我正确地理解了它),我会这样做:normalisedValue = x /(10 - -10); (当然,范围是-10到+10),这等于normalizedValuie = x /(20)??只是想确认我正确理解这一点。主要的问题是,我只有范围值,因为我插入设备并在输出时将其倾斜!即我在运行时没有这些信息。 – Zippy