2016-02-19 46 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