2016-12-01 78 views
0

我想寫一個相機腳本,它將保持旋轉時我所看到的透視點。團結相機旋轉時保持透視

public void RegisterRotationControls() 
{ 
    var horizontal = CrossPlatformInputManager.GetAxis(InputAxisName.Horizontal.ToString()); 

    offsetX = Quaternion.AngleAxis(horizontal * turnSpeed, Vector3.up) * offsetX; 
    transform.position = player.position + offsetX; 

    transform.LookAt(player.position + PlayerOffset); 
} 

目前這個腳本只正常工作當相機看的球員,但是相機具有自由移動的位置,但旋轉應保持相對的中心。 enter image description here

頂行dipicts當前行爲,而底部描述應該怎樣存在的

+2

您是否考慮過在攝像機下面以玩家爲中心的空遊戲對象,然後旋轉它?然後,您可以讓相機指向任何方向,並且仍然圍繞播放器以一致的圓圈旋轉它。 – Serlite

+0

聽起來很不錯,如果我這樣做,相機是否會保持與父母相關的視角?我必須從相機中取消耦合父項來移動位置,或者我可以相對於父項移動位置 –

+0

嗯,您可以根據需要移動相機(可能是本地的,所以它相對於父項的本地空間移動)。不完全確定照相機保持其相對於父母的視角是什麼意思 - 它應該表現爲您在第二張照片中顯示的內容,但請嘗試一下,看看它是否符合您的需求。 – Serlite

回答

2

手動計算旋轉了一圈移動的攝像機,同時保留其原有的(相對)面對的是有些繁瑣,並且需要你需要做更多的數學計算。

一個流行的解決方案是將相機放在一個空的GameObject下面,然後將該GameObject放在要讓相機旋轉的點/對象上。 (這基本上將很多計算內化,讓引擎完成繁重的工作。)然後,可以根據需要在本地翻譯相機,然後旋轉容器GameObject將相機移動一圈。