2014-07-16 42 views
0

n00b問題,我甚至沒有足夠的理解能夠很好地理解Google(或者理解適當的答案)。在UnityScript Unity3d中陀螺儀輸入和時鐘數學問題

我在探索Unity 3D並使用陀螺儀輸入問題是,陀螺儀的每個軸都返回-1和+1之間的值,0是陀螺儀啓用時的設備方向,其中+1 & -1共享一個邊框(如鐘面上的12)。但是,陀螺儀的0,0,0點在陀螺儀啓用時不會被重置。統一論壇建議取消激活然後重新啓動陀螺儀將會有所幫助 - 事實並非如此。

實際上,在當前版本的iOS & Unity中,陀螺儀的0點是靜態的,這意味着我需要「抵消」它以考慮手機的起始位置。

我的計劃是有類似:

var GyroOffset : Quaternion; 
var CurrentGyroAttitude : Quaternion; 
var DeadSpotXPos : float; 
var DeadSpotXPos : float; 
var ThresholdPos : float; 
var ThresholdNeg : float; 

function Start() { 
    Input.gyro.enabled = true; 
    Input.gyro.UpdateInterval = 0.001; 
    GyroOffset = Input.gryo.attitude; 
} 

function Update() { 
    CurrentGyroAttitude = input.gyro.attitude - GyroOffset; 

    if (CurrentGyroAttitude.x > ThresholdPos) DoSomething(1); 
    if (CurrentGyroAttitude.x < ThresholdNeg) DoSomething(-1); 
    if (CurrentGyroAttitude.x > DeadSpotXPos && 
     CurrentGyroAttitude.X < ThresholdPos) DoSomethingElse(1); 
    if (CurrentGyroAttitude.x < DeadSpotXNeg && 
     CurrentGyroAttitude.x < ThresholdNeg) DoSomethingElse(-1); 
} 

*如果DoSomething的(arbitraryFloat)和DoSomethingElse(anotherArbitraryFloat)做的事情,我想做到和任意浮動是沒有關係的陀螺儀輸出。

由於陀螺輸出介於-1和+1之間,我們可以達到CurrentGyroAttitude.x可合法爲-2或+2的情況。這個計劃的問題是我必須「抵消」到我的閾值& deadspots以及爲了調整目的而變得「不整齊」。我寧願只操縱CurrentGyroAttitude。

但是,我不知道如何在UnityScript中做「鐘面雕刻」。我想我正在談論模數學,但我一直在遇到複雜的數學關於加密,這是我的頭。英寸:)

任何人都可以通過「清潔」陀螺儀態度輸出,以便我的乾淨輸出保持 - 1和+1,一旦'抵消'已經生效?

順便說一句,如果任何人都可以透露Unity的GyroUpdateInterval,這將是可怕的,因爲文檔沒有解釋什麼更新測量,或操縱的效果是什麼。

回答

0

我不假設你真的想訪問Quaternion的成員 - 他們不像你認爲的那樣工作。你想要的是Quaternion.eulerAngles

要相對於起始位置的角度修改Update

Vector3 CurrentGyroEuler=(Quaternion.Inverse(Input.gyro.attitude)* GyroOffset).eulerAngles 
+0

哦,還有一件事,有可能仍然是一個問題,當你沒有得到相同的幀上一個真正的陀螺立場你打開它。更好地驗證一下。 –

+0

感謝您花時間回答,@ChanibaL - 我想檢查一下我是否理解這裏發生的事情 - 1.我需要聲明一個名爲CurrentGyroEuler的新矢量3,2.每一幀都是「raw陀螺態度「乘以陀螺偏移量,然後3被轉換成歐拉角?你能通過一個例子來指導我如何工作嗎? :) – difficultnerd

+0

CurrentGyroEuler只是爲了您的便利,因爲您正在分析歐拉價值。 'Quaternion.Inverse(Input.gyro.attitude)* GyroOffset' in quaternionish means'GyroOffset +(-Input.gyro.attitude)'。在這裏,有一個演示:https://gist.github.com/chanibal/baf46307c4fee3c699d5 –