2016-03-03 15 views
0

我希望能夠跟隨一個滾球(我可以自己做),並且我希望能夠在按住右鍵的同時圍繞球旋轉(我也可以自己做),但是當我嘗試將這兩個結合起來時,我會得到不想要的結果。統一,跟隨一個滾球並且能夠圍繞它旋轉

在下面的代碼中,您可以看到,如果我只是想圍繞球旋轉,我的「RotateAround」會照顧到這個問題,如果我只是想跟隨球,無論它與相機的距離是否相同離開和角度,然後我的_offset照顧。當我試圖將2合併到一起時,它可以跟隨球並且能夠旋轉攝像頭(通過右鍵點擊),同時攝像頭停止跟蹤球。

我想,因爲你可以用_offset自己跟蹤球,我發現在Unity教程中發現,當位置改變時,RotateAround _offset會負責保持相機處於新的位置。順便說一下,這個腳本在我的Camera GameObject上。

void Start() 
{ 
    _offset = CamFollowStartSpot.position - Ball.transform.position; 
} 

void LateUpdate() 
{ 
    if (Input.GetMouseButton(1)) 
    { 
     _transform.RotateAround(Ball.transform.position, Vector3.up, 20 * Time.deltaTime); 
     _offset = _transform.position - Ball.transform.position; 
    } 
    _transform.position = Ball.transform.position + _offset; 
} 
+0

你*兩個獨立的遊戲對象*,一個包裹其他 – Fattie

+0

@JoeBlow做到這一點,你能解釋一下你的包裹等請的意思。 – JoeyL

+0

我只是說坐在另一個遊戲對象內,你可能有三四個深。在一個層次上,你會「轉向」,在下一個層次上,你會「軌道」或任何其他的。每個級別都有不同的腳本。這是一種常用的技術..當你有時間的時候試驗它! – Fattie

回答

-1

我想通了什麼是錯的,那是我在最後確定位置的時候。下面的代碼需要在IF語句之前調用以檢查我的鼠標單擊輸入。

_transform.position = Ball.transform.position + _offset; 

正確的方法是在下面的代碼中。

void LateUpdate() 
{ 
    _transform.position = Ball.transform.position + _offset; 
    if (Input.GetMouseButton(1)) 
    { 
     _transform.RotateAround(Ball.transform.position, Vector3.up, 20 * Time.deltaTime); 
     _offset = _transform.position - Ball.transform.position; 
    } 
}