2013-07-20 37 views
4

我正在研究一款安卓遊戲,根據您的設備傾斜方向計算玩家的運動(左,上,右,下)。Android加速度計在任何方向讀取

我也想在遊戲開始時這樣做,它計算當前的傾斜度,這樣如果玩家在任何位置拿着手機,他仍然可以玩遊戲。

這裏是我如何做它:

(啓動):

defaultAccelX = SceneManager.activity.getAccelX(); 
defaultAccelY = SceneManager.activity.getAccelY(); 

(然後在每次更新):

float modifiedAccelX = (SceneManager.activity.getAccelX() - defaultAccelX); 
float modifiedAccelY = (SceneManager.activity.getAccelY() - defaultAccelY); 

現在這個工程如果玩家保持手機朝向底部。但是,如果我將手機顛倒過來,頂部和底部會顛倒過來,而右側不起作用。

有誰知道我應該如何處理它在任何方向工作?

謝謝

+0

「但是,如果我拿着手機翻面,上下顛倒,右也不行。」這是否意味着正確的傾斜將玩家向左移動? – linski

+0

左側沒有左傾,右側並沒有真正移動玩家,或稍微有點怪異。 – xtrimsky

+0

如果左側有效,但右側沒有,爲什麼不在11點到3點左側完全左轉..並記錄下你的座標。 –

回答

0

除了線性加速度傳感器,Android還提供對方向傳感器的訪問。

private SensorManager mSensorManager; 
private Sensor mSensor; 
... 
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); 

取向傳感器可以給你的方位(旋轉度繞Z軸),間距(相同的,但X軸),和滾動(相同,但Y軸)。

在您的應用程序運行時可以訪問方向傳感器數據,因此即使在播放過程中更改了手機的方向,您也可以確定哪個方向朝上。

見細節處:Android SDK: Position Sensors