2016-02-19 48 views
0

我有順利旋轉的問題,我試圖做一個遊戲系統的旋轉像寺廟運行。我不知道如何通過lerp附加平滑旋轉來抵消。光滑的相機在第三人的旋轉周圍

//Position 
public GameObject player; 
private Vector3 offSet; 

//Rotation 
//Quaternion localRotation; 
Quaternion leftRotation = Quaternion.Euler(new Vector3 (0, 90, 0)); 
Quaternion rightRotation = Quaternion.Euler(new Vector3 (0, -90, 0)); 

Vector3 lRotation = new Vector3(0.0f, -90f, 0.0f); 
Vector3 rRotation = new Vector3(0.0f, 90f, 0.0f); 

void Start() { 
    offSet = transform.position - player.transform.position; 
} 

void Update() { 
} 

void LateUpdate(){ 

    transform.position = player.transform.position + offSet; 
    transform.LookAt (player.transform); 

    if (Input.GetKeyDown (KeyCode.LeftArrow) && GameObject.Find("Player").GetComponent<PlayerMovement>().turn) { 

     offSet = Quaternion.Euler(lRotation)*offSet; 
     transform.position = player.transform.position + offSet; 
     transform.LookAt (player.transform); 

    } else if (Input.GetKeyDown (KeyCode.RightArrow) && GameObject.Find("Player").GetComponent<PlayerMovement>().turn) { 

     offSet = Quaternion.Euler(rRotation)*offSet; 
     transform.position = player.transform.position + offSet; 
     transform.LookAt (player.transform); 
    } 
} 

}

回答

0

我建議執行相機的Transform.RotateAround()變換,利用玩家的遊戲對象爲中軸線。

例子:

//in camera-code 
transform.RotateAround(player.transform.position, Vector3.up, 45f); 

我希望幫助!

編輯: 此外,您也可以使用Mathf.LerpAngle,而不是一個固定值作爲第三個參數,以確保平滑的結果。

+0

謝謝,林不知道這是否會工作,我需要使它停留在那個旋轉,因爲當我按下RotateAround時,我按下按鍵,它只是旋轉旋轉我立即設置並返回到默認旋轉,所以我怎麼能讓它停留在那個輪換? – MrAbeckon

+0

好的,我使用Mathf.LerpAngle函數,它的工作非常好,現在唯一的問題是在按鍵後停止循環循環。 – MrAbeckon

+0

@MrAbeckon我不知道我明白。你能澄清一下嗎? – andeart