CameraController.cs
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class CameraController : MonoBehaviour
- {
- float MouseX;
- float MouseY;
- //左右旋转速度
- public float routateX;
- //上下旋转速度
- public float routateY;
- //旋转速度
- public float LerpRotateSpeed;
- //目标点距离缩放
- public float distanceScaleTargetValue;
- //当前目标点距离缩放
- public float distanceScaleCurrentValue;
- //最小距离
- public float minDistance;
- //最大距离
- public float maxDistance;
- //限制最小旋转
- public float minRotateYClampValue;
- //限制旋转最大距离
- public float maxRotateYClampValue;
- //摄像机看向的位置
- public Transform targetTrans;
- //镜头缩放差值速度
- public float lerpSpeed;
-
- // Start is called before the first frame update
- void Start()
- {
- MouseX = transform.eulerAngles.y;
- MouseY = transform.eulerAngles.x;
- distanceScaleCurrentValue = distanceScaleTargetValue;
- }
-
- // Update is called once per frame
- void Update()
- {
- if (Input.GetMouseButton(0))
- {
- MouseX += Input.GetAxis("Mouse X")*routateX;
- //因为摄像机 向下旋转x值增加 向上旋转x减小 所以减去
- MouseY -= Input.GetAxis("Mouse Y")*routateY;
- MouseY = Mathf.Clamp(MouseY, minRotateYClampValue, maxRotateYClampValue);
- }else if (Input.GetAxis("Mouse ScrollWheel") != 0)
- {
- distanceScaleTargetValue += Input.GetAxis("Mouse ScrollWheel");
- distanceScaleTargetValue = Mathf.Clamp(distanceScaleTargetValue, 0, 1);
- }
-
- }
-
- private void FixedUpdate()
- {
- //左右转 设置MouseY的值 上下转设置MouseX的值
- Quaternion quaternion = Quaternion.Euler(MouseY,MouseX , 0);
- transform.rotation = Quaternion.Lerp(transform.rotation,quaternion,Time.deltaTime*LerpRotateSpeed);
- Vector3 targetPosition = transform.rotation * new Vector3(0, 0,-GetCurrentPos())+targetTrans.position;
- transform.position = targetPosition;
- }
-
- /// <summary>
- /// 获取当前位置
- /// </summary>
- /// <returns></returns>
- private float GetCurrentPos()
- {
- distanceScaleCurrentValue = Mathf.Lerp(distanceScaleCurrentValue,distanceScaleTargetValue,Time.deltaTime*lerpSpeed);
- return minDistance + (maxDistance - minDistance) * distanceScaleTargetValue;
- }
- }
设置数值参考
