2015-10-15 79 views
0

如果我使用我的控制器的正確模擬棒,我會嘗試製作第三人稱相機,它跟隨我的播放器並且相機應該旋轉,但不是播放器。我跟着這個tutorialUnity3D中的第三人稱攝像頭追隨者

我的代碼:

void adjustCameraToPlayer() 
{ 
    Quaternion rotation = Quaternion.identity; 
    if (Input.GetAxis("RightStickX") != 0f) 
    { 
     float horizontal = Input.GetAxis("RightStickX")/100f; 
     transform.Rotate(0, horizontal, 0); 
     float desiredAngle = transform.eulerAngles.y; 
     rotation = Quaternion.Euler(0, desiredAngle, 0); 
    } 

    transform.position = player.transform.position-(rotation * offset); 

    transform.LookAt(player.transform); 
} 

我的問題是,相機旋轉太快,我試圖改變水平值的紅利,但它並沒有幫助。

回答

1

這就是爲什麼你總是應該將deltaTime納入每幀發生的變換操作。這樣你就不會在每一幀都有很大的旋轉,而是隨着時間的推移。你也應該加入一個可以實時操作的speed變量,這樣你就可以調整它的方式:

public float speed = 5f; 

void adjustCameraToPlayer() 
{ 
    Quaternion rotation = Quaternion.identity; 
    if (Input.GetAxis("RightStickX") != 0f) 
    { 
     float horizontal = Input.GetAxis("RightStickX"); 
     transform.Rotate(Vector3.up * horizontal * speed * Time.deltaTime); 
     float desiredAngle = transform.eulerAngles.y; 
     rotation = Quaternion.Euler(0, desiredAngle, 0); 
    } 

    transform.position = player.transform.position-(rotation * offset); 

    transform.LookAt(player.transform); 
}