2011-08-22 30 views
0

我正在開發一款Android平臺遊戲。基本上,我想做一個跳躍控制,你搖動手機。但是,正如你可能會說的那樣,我有點難過。檢測特定的搖動(說明:D)

我有來自加速度計的X,Y,Z值,我該如何判斷玩家是否在晃動手機?據我所知,這不是微不足道的......至少對我而言。

搖動可能是一個錯誤的詞,它更像是隻是移動手機跳起來。我不知道如何解釋它的話,那麼這裏有一個美麗的插圖:

Demo of shaking phone?

回答

0

你想用Linear Acceleration Sensors來完成這項任務。

只需將傳感器類型放入您的觸發代碼中,並在onSensorChanged()中放入您需要的任何邏輯即可。

希望這會有所幫助!

+0

謝謝,但它的硬件有多常見?我承認,我幾乎不知道硬件傳感器。 –

+0

這是你需要爲你自己確定你想要的目標設備。嘗試檢查Android開發站點目標設備部分。據我所知,任何帶加速度計的設備都有這個傳感器(這很可能是普通加速度計的推導) – Codeman

0

將rour加速度計座標視爲慣性球。如果手機跳球跳(Z向上,然後向下)。

2

我將介紹如何手動執行此操作。

加速度計返回對應於物體感覺到的加速度的值。

例如,如果X值很高,則表示手機在其X方向正在加速。但是,您從單一快照中不知道這種加速是由於晃動還是因爲突然穩定的方向移動。

因此,您要查找的是何時加速度很高,然後突然非常低或負值等等。你想要的是加速度或挺舉度的變化率。在代碼方面,您希望保留加速度值的歷史記錄,並保持運行的加加速度值(例如,在最後10幀中的加速度變化)。如果此值達到閾值(正值或負值),那麼這就是您的震動。

當然,請分別對X,Y和Z加速度進行此操作,然後添加加加速度值以獲得測試閾值的最後一個加速度值。

0

我認爲你應該平均加速度計的讀數爲250毫秒,然後看看平均值是否高於某個值(根據您的判斷和應用程序的要求)在預期的方向上。如果它確實你的行動已經完成。當你搖晃時,加速度計的平均時間將大部分爲中性。但是我上面描述的內容需要重複測試,以便將其更改爲正確的數字以獲得更好的用戶體驗。