1. 程式人生 > >Camera Vertical Rotate(相機垂直旋轉)

Camera Vertical Rotate(相機垂直旋轉)

垂直的旋轉(camreaHandle的x旋轉的效果):要將旋轉的角度控制在-40到30之間,注意不能用rotate的方法去調整角度,會發生同位角的問題到一定角度會突然跳到同位角位置。
程式碼增加:

public class cameracontroller : MonoBehaviour {
    public PlayerInput pi;//用來在update裡面調整
    public float horizontalSpeed = 100.0f;//視覺化控制
    public float verticalSpeed = 80.0f;

    private GameObject playerHandle;
    private GameObject cameraHandle;
    private float tempEulerX;


	// Use this for initialization
	void Awake() {
        cameraHandle = transform.parent.gameObject;//找自己的父層轉成gameobject
        playerHandle = cameraHandle.transform.parent.gameObject;
        tempEulerX = 20;
	}
	
	// Update is called once per frame
	void Update () {
        playerHandle.transform.Rotate(Vector3.up, pi.Jright * horizontalSpeed * Time.deltaTime);//用rotate方法進行旋轉
        //不用rotate方法會發生同位角問題 用普通加減來調整旋轉
        //tempEulerX = cameraHandle.transform.eulerAngles.x;
        tempEulerX -= pi.Jup * verticalSpeed * Time.deltaTime;
        tempEulerX =Mathf.Clamp( tempEulerX, -40, 30);//將角度控制在-40到30
        cameraHandle.transform.localEulerAngles= new Vector3(tempEulerX, 0, 0);//通過給一個新的角度讓相機旋轉

    }
}

這樣實現了相機的垂直旋轉(x的旋轉).