功能:摄像头可以围绕主角进行旋转,放大,缩小,
镜头设置了一个Y轴的旋转极限,保证视角正确。
Update内进行缩放,并且记录offsetposition,用于下次位置更新,
旋转时记得弄清楚围绕哪个对象,哪个轴。
(调用顺序)
private float distance;
private bool isscroll;
public GameObject player;
private Vector3 offsetposition;
// Use this for initialization
void Start () {
transform.LookAt(player.transform.position);
offsetposition = this.transform.position - player.transform.position;
distance = offsetposition.magnitude;
}
// Update is called once per frame
void Update () {
transform.position = player.transform.position + offsetposition;
Scrollscreen();
distance -= Input.GetAxis("Mouse ScrollWheel")*10;
distance = Mathf.Clamp(distance, 2, 18);
offsetposition = offsetposition.normalized * distance;
}
void Scrollscreen()
{
if(Input.GetMouseButtonDown(0)&&!EventSystem.current.IsPointerOverGameObject())
{
isscroll = true;
}
if(Input.GetMouseButtonUp(0))
{
isscroll = false;
}
if(isscroll)
{
transform.RotateAround(player.transform.position, player.transform.up, (Input.GetAxis("Mouse X") * 5));
Quaternion quaternion = transform.rotation;
Vector3 vector3 = transform.position;
transform.RotateAround(player.transform.position, transform.right, -(Input.GetAxis("Mouse Y") * 5));
float x = transform.eulerAngles.x;
if(x<10||x>80)
{
transform.rotation = quaternion;
transform.position = vector3;
}
offsetposition = this.transform.position - player.transform.position;
}
}