using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMove : MonoBehaviour { [Header("平移速度")] [SerializeField]private float speed = 2f; [Header("限制范围")] [SerializeField] private Vector2 RangeX, RangeY, RangeZ; [Header("鼠标输入方式")] public Mouse mouse; public MouseMoveY mouseMoveY; [Header("鼠标移动到边缘的差值")] [SerializeField] private float mouseOffset = 0.01f; [Header("鼠标Y轴移动速度")] [SerializeField] private float MouseOffsetY; void Start() { } // Update is called once per frame void Update() { CameraTranslate(); CameraYmove(); } /// /// 鼠标移动控制Y轴 /// public void CameraYmove() { if (mouseMoveY==MouseMoveY.边界判断) { Vector3 v1 = Camera.main.ScreenToViewportPoint(Input.mousePosition); if (v1.y >= 1 - mouseOffset) { transform.Translate(Vector3.up * MouseOffsetY * Time.deltaTime*speed); } if (v1.y <= mouseOffset) { transform.Translate(Vector3.up * -MouseOffsetY * Time.deltaTime*speed); } } if (Input.GetMouseButton((int)mouse) && mouseMoveY == MouseMoveY.按下判断) { float mouseY = Input.GetAxis("Mouse Y"); transform.Translate(0, mouseY * speed * Time.deltaTime, 0); } float CameraY = Mathf.Clamp(transform.position.y, RangeY.x, RangeY.y); if (transform.position.y >= RangeY.x || transform.position.y <= RangeY.y) { transform.position = new Vector3(transform.position.x, CameraY, transform.position.z); } } /// /// 摄像机平移 /// public void CameraTranslate() { float CameraX = Mathf.Clamp(transform.position.x, RangeX.x, RangeX.y); float CameraZ = Mathf.Clamp(transform.position.z, RangeZ.x, RangeZ.y); if (CameraX >= RangeX.x || CameraX <= RangeX.y) { transform.position = new Vector3(CameraX, transform.position.y, transform.position.z); } if (CameraZ >= RangeZ.x || CameraZ <= RangeX.y) { transform.position = new Vector3(transform.position.x, transform.position.y, CameraZ); } float horizontal = Input.GetAxis("Horizontal"); float vetical = Input.GetAxis("Vertical"); transform.Translate(horizontal * speed * Time.deltaTime, 0, vetical * speed * Time.deltaTime); } }