2017-05-22 86 views
1

試圖找出一種方法來在旋轉器通過360度後增加旋轉計數。雖然這從來沒有奏效,因爲eulerAngles在360重置。有什麼好辦法做到這一點?我試過> 355,但這不是一個好的解決方案。計數旋轉[Unity C#]

  Spinner.transform.Rotate(0, 0, speed); 
      float angleZ = Spinner.rotation.eulerAngles.z; 

      if (angleZ > 360) 
      { 
       Rotations++; 
      } 

回答

4

您需要檢查旋轉後&之前的角度。

根據文檔「速度」是要旋轉的度數,所以將360的整數除以360加到旋轉&然後檢查已重置的最終值。

float angleZ1 = Spinner.rotation.eulerAngles.z; 
Spinner.transform.Rotate(0, 0, speed); 
float angleZ2 = Spinner.rotation.eulerAngles.z; 
float angleZDiff = angleZ2 - angleZ1; 


Rotations += (int)(speed/360); 
if ((speed >0) && (angleZDiff < 0)) 
    Rotations++ 
else if ((speed < 0) && (angleZDiff > 0)) 
    Rotations--; 
+0

這是有道理的。如果速度太快怎麼辦? – itsPav

+0

如果速度太快 - 即導致超過360度的旋轉,那麼您將錯過旋轉 - 例如,如果速度導致旋轉361度,因爲eulerAngle在360處「重置」,那麼旋轉僅顯示爲1度。 – PaulF

+0

你可以用什麼方法來避免這種情況? – itsPav

0

您可以將角度除以360並將其轉換爲int以獲得旋轉次數。

Rotations = (int)(angle/360f); 
+0

這只是給出角度 - 旋轉 – PaulF

+0

的不是數字@PaulF對不起它實際上是師,我已經固定我的答案。 – Iggy

+0

如果你讀到這個問題 - OP說eulerAngles總是在360重置 - 所以這個值總是> = 0&<360 - 這就是爲什麼有問題。 – PaulF