using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
public Transform target;//主角
public float x;
public float y;
public float xSpeed = 50;//X靈敏度
public float ySpeed = 50;//Y靈敏度
public float distence = 2;//當前攝影機與主角的距離
public Camera MainCamera;//攝影機
public GameObject MainPerson;//主角
private int RotationSpeed;
private int ScaleSpeed;
private int MouseLeftKey = 0;
private int MouseRightKey = 1;
private float MinScaledistance = 30f;
private float MaxScaledistance = 80f;
private Quaternion rotationEuler;
private Vector3 cameraPosition;
// Use this for initialization
void Start () {
RotationSpeed = 50;
ScaleSpeed = 2;
MainCamera.transform.LookAt(MainPerson.transform.position);
}
// Update is called once per frame
void Update () {
}
void LateUpdate()
{
MouseLeftFunction();
MouseRightFunction();
MouseCenterFunction();
}
void MouseLeftFunction()
{
//滑鼠左键
if (Input.GetMouseButton(MouseLeftKey))
{
}
}
void MouseRightFunction()
{
//滑鼠右键
if (Input.GetMouseButton(MouseRightKey))
{
//讀取滑鼠的X,Y軸移動訊息
x+= Input.GetAxis("Mouse X")*xSpeed*Time.deltaTime;
y-= Input.GetAxis("Mouse Y")*ySpeed*Time.deltaTime;
//保證X在360度以內
if(x>360)
{
x-=360;
}
else if(x<0)
{
x+=360;
}
}
}
void MouseCenterFunction()
{
//滑鼠中間滾輪向前滾動
if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
float CurrentDistance = MainCamera.fieldOfView;
CurrentDistance += ScaleSpeed;
if (CurrentDistance > MaxScaledistance)
MainCamera.fieldOfView = MaxScaledistance;
else
MainCamera.fieldOfView = CurrentDistance;
}
//滑鼠中間滾輪向後滾動
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
float CurrentDistance = MainCamera.fieldOfView;
CurrentDistance -= ScaleSpeed;
if (CurrentDistance < MinScaledistance)
MainCamera.fieldOfView = MinScaledistance;
else
MainCamera.fieldOfView = CurrentDistance;
}
//運算攝影機座標、旋轉
rotationEuler = Quaternion.Euler (y,x,0);
cameraPosition = rotationEuler * new Vector3 (0, 1, -distence) + target.position;
//應用
transform.rotation = rotationEuler;
transform.position = cameraPosition;
}
}