單挑:即使這個問題出現在我使用Unity的時候,它沒有任何特定的Unity,而更多的是關於編程邏輯,所以請不要回避。問題與角度的界限
我正在使用Unity並通過腳本旋轉對象。事情是,如果我把它旋轉到180度,物體不會精確地旋轉到那麼多,並趨於停止在179到181度之間。因此,爲了檢查旋轉是否完成,我檢查旋轉角度是否爲targetAngle +/- 1,這是有效的。
我檢查使用
if (transform.eulerAngles.z > lowerLimit && transform.eulerAngles.z < upperLimit)
其中
lowerLimit = targetAngle-1;
upperLimit = targetAngle + 1;
現在,當targetAngle爲0。在這種情況下,問題就出現了,我的腳本檢查,如果旋轉角度爲-1到1之間。但是,-1應該是359,因此需要檢查角度是否在359和1之間。
我該如何實現? 換句話說,我猜我在問如何實現一個環繞數字系統。
編輯
找到一個解決方法。如果targetAngle爲0,我特意處理。它有效,但不是最優雅的。
if (targetAngle == 0.0)
{
if ((transform.eulerAngles.z > 359.0 && transform.eulerAngles.z <= 360.0) || (transform.eulerAngles.z >= 0.0 && transform.eulerAngles.z <= 1))
{
rotate = false;
}
}
else
{
if (transform.eulerAngles.z > targetAngle - 1 && transform.eulerAngles.z < targetAngle + 1)
{
rotate = false;
}
}
啊,非常好。在這個特殊情況下,我不會需要超過180轉,所以我想我會採用這個。謝謝! – xbonez
我仍然遇到這個問題。如果targetAngle爲0,lowerLimit爲359,upperLimit爲361.但是,當從180旋轉到0(與360相同)時,旋轉停止在359左右。因此,在這種情況下,我檢查 如果((359 + 360) > 359 &&(359 + 360)<361) – xbonez
請嘗試上次編輯。我100%確定這可以通過巧妙使用模數和根據需要添加360來解決。如果仍然不是這樣,恐怕我可能需要在調試環境中看到它,才能完全掌握它。既然我現在要走了,如果你發佈你的進度(除非你或其他人修復過),我會在今晚或明天再次看到這一點。 – takrl