2015-06-09 37 views
2

我想讓鼠標瞄準相機,水平和垂直旋轉我的播放器,看看播放器,並保持恆定的距離。 在該版本中,它工作正常,但我不能讓它水平也。 每個版本的相機凍結,我自己旋轉我的播放器。 我是編程新手,所以我用合適的target.transform.eulerAngles.y來分配垂直,但我不能這樣做。3d鼠標瞄準相機第三人稱垂直C#

public class MouseAimCamera : MonoBehaviour { 
    public GameObject target; 
    public float rotateSpeed = 5; 
    Vector3 offset; 

    void Start() { 
     offset = target.transform.position - transform.position; 
    } 

    void LateUpdate() { 
     float horizontal = Input.GetAxis("Mouse X") * rotateSpeed; 
     target.transform.Rotate(0, horizontal, 0); 

     float desiredAngle = target.transform.eulerAngles.y; 
     Quaternion rotation = Quaternion.Euler(0, desiredAngle, 0); 
     transform.position = target.transform.position - (rotation * offset); 

     transform.LookAt(target.transform); 
    } 
} 

如果有人能幫助我,我會很高興。

+0

您是否可以更新您的問題以提供更多關於您要查找的內容的詳細信息?試着具體說明你想要鼠標控制什麼,以及你想要相機擁有什麼樣的方向。如果您希望攝像機始終朝上,那麼當您直線向上或向下旋轉時,您必須將垂直旋轉夾緊以防止捕捉萬向節旋轉。 –

回答

2

這將在世界空間旋轉,這可能會在某些角度感覺錯誤,因爲相機並不總是直線朝上。

public class MouseAimCamera : MonoBehaviour { 
    public GameObject target; 
    public float rotateSpeed = 5; 

    void Start() { 
     transform.parent = target.transform; 
     transform.LookAt(target.transform); 
    } 

    void LateUpdate() { 
     float horizontal = Input.GetAxis("Mouse X") * rotateSpeed; 
     float vertical = Input.GetAxis("Mouse Y") * rotateSpeed; 
     target.transform.RotateAround(target.transform.position, Vector3.up, horizontal); 
     target.transform.RotateAround(target.transform.position, Vector3.left, vertical); 
    } 
} 

這將在本地空間旋轉,並可能感覺更自然,這取決於你想要建立什麼。這接近你原來的解決方案,所以我猜這不是你想要的。

public class MouseAimCamera : MonoBehaviour { 
    public GameObject target; 
    public float rotateSpeed = 5; 

    void Start() { 
     transform.parent = target.transform; 
     transform.LookAt(target.transform); 
    } 

    void LateUpdate() { 
     float horizontal = Input.GetAxis("Mouse X") * rotateSpeed; 
     float vertical = Input.GetAxis("Mouse Y") * rotateSpeed; 
     target.transform.Rotate(vertical, horizontal, 0); 
    } 
} 
+0

Thx這是我心目中的良好方向。 但是它仍然存在問題。 它向上移動並向右上方正確移動,但當您將鼠標移動到其中一個角落時,攝像機開始在z軸上旋轉。 我想凍結它。 使用「Q」和「W」按鈕啓用該軸上的旋轉。 另一個問題是相機粘在播放器的正確配置文件上。 它應該留在他身後。 – Phantoms

+0

transform.parent = target.transform將攝像機鎖定在其開始的位置。如果您希望它位於播放器後面,請將其放置在場景中的播放器後面。 –

+0

Thx很多!腳本符合我的期望。我只需要設置垂直,因爲你的腳本就像在垂直方向翻轉鼠標一樣:) 並將相機移動到場景中正確位置解決了問題。 – Phantoms