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,這將是可怕的,因爲文檔沒有解釋什麼更新測量,或操縱的效果是什麼。
哦,還有一件事,有可能仍然是一個問題,當你沒有得到相同的幀上一個真正的陀螺立場你打開它。更好地驗證一下。 –
感謝您花時間回答,@ChanibaL - 我想檢查一下我是否理解這裏發生的事情 - 1.我需要聲明一個名爲CurrentGyroEuler的新矢量3,2.每一幀都是「raw陀螺態度「乘以陀螺偏移量,然後3被轉換成歐拉角?你能通過一個例子來指導我如何工作嗎? :) – difficultnerd
CurrentGyroEuler只是爲了您的便利,因爲您正在分析歐拉價值。 'Quaternion.Inverse(Input.gyro.attitude)* GyroOffset' in quaternionish means'GyroOffset +(-Input.gyro.attitude)'。在這裏,有一個演示:https://gist.github.com/chanibal/baf46307c4fee3c699d5 –