public float ScrollSpeed = 5.0f;
public float distance = 0;
private Vector3 offsetPosition; //位置偏移
private Transform player;
private bool isRotating = false; //鼠标是否滑动
public float RotateSpeed = 1.0f;
void Start()
{
player = GameObject.FindGameObjectWithTag(tags.player).transform;
transform.LookAt(player.position);
offsetPosition = transform.position - player.position;
}
void Update()
{transform.position = offsetPosition + player.position;
//处理视野的旋转
RotateView();
//视野的拉近拉远效果
ScrollView();
}
void ScrollView()
{
distance = offsetPosition.magnitude;
distance -= Input.GetAxis("Mouse ScrollWheel")*ScrollSpeed;
distance = Mathf.Clamp(distance, 2, 18);
offsetPosition = offsetPosition.normalized * distance;
}
void RotateView()
{
//Input.GetAxis("Mouse X"); //得到鼠标在水平方向的滑动
//Input.GetAxis("Mouse Y"); //得到鼠标在垂直方向的滑动
if (Input.GetMouseButtonDown(1))
{
isRotating = true;
}
if (Input.GetMouseButtonUp(1))
{
isRotating = false;
}
if (isRotating)
{
//左右变换视野
transform.RotateAround(player.position,player.up, RotateSpeed * Input.GetAxis("Mouse X"));
Vector3 originalPos = transform.position;
Quaternion originalRotation = transform.rotation;
//上下变换视野
transform.RotateAround(player.position, transform.right, -RotateSpeed * Input.GetAxis("Mouse Y"));
float x = transform.eulerAngles.x;
if (x<10 || x>80)
{
//当超出范围之后将属性归为原来的,让旋转无效
transform.position = originalPos;
transform.rotation = originalRotation;
}
//x = Mathf.Clamp(x, 10, 80);
//transform.eulerAngles = new Vector3(x,transform.eulerAngles.y,transform.eulerAngles.z);
}
offsetPosition = transform.position - player.position;
}