我使用此代碼旋轉我的游戲物件,但問題是當我第一次單擊時,游戲物件旋轉到不同的角度。然后找到。
private Vector3 _prevPos;
private Vector2 ret;
if (Input.GetMouseButton(0))
{
ret = Input.mousePosition - _prevPos;
_prevPos = Input.mousePosition;
transform.Rotate(ret.y / 10, 0, ret.x );
}
在除錯中,當我第一次單擊時,“ret.y”的數字不是 0。
我該如何解決這個問題?
uj5u.com熱心網友回復:
正如在初始幀中正確提到的,您正在使用 pure 旋轉Input.mousePosition。
為了避免錯誤的增量,您可以額外處理初始情況
if(Input.GetMouseButtonDown(0))
{
_prevPos = Input.mousePosition
}
else if (Input.GetMouseButton(0))
{
ret = Input.mousePosition - _prevPos;
_prevPos = Input.mousePosition;
transform.Rotate(ret.y / 10, 0, ret.x );
}
第一個塊現在在按下的第一幀中執行,第二個塊在所有其他幀中執行,同時按鈕保持按下狀態
uj5u.com熱心網友回復:
問題是_prevPos(0,0),所以第一次ret是Input.mousePosition。
_prevPos當沒有輸入時你必須保持更新,因為會出現同樣的問題,當你釋放按鈕時,將滑鼠移動到別處,然后再次單擊。
移動_prevPos = Input.mousePosition到末尾Update。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/525150.html
標籤:unity3d
上一篇:獲取SqlException0x80131904,無效的物件名稱“SiteToSites”
下一篇:Z軸上的Unity2d旋轉
