简书链接:unity滚轮控制摄像机距离
文章字数:195,阅读全文大约需要1分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
   |  if (Input.GetAxis("Mouse ScrollWheel") != 0)
           {              CinemachineVirtualCamera virtualCamera = cam as CinemachineVirtualCamera;              CinemachineComponentBase body = virtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Body);              if (body is not CinemachineFramingTransposer)              {                  return;              }              CinemachineFramingTransposer transposer = (body as CinemachineFramingTransposer);              float cameraDistance = transposer.m_CameraDistance;              if (GameUtil.IsPointerOverUI(Input.mousePosition))              {                  return;              }              float delta_z = -Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed;        /*      if (distance == 0 ||Mathf.Abs(distance-transposer.m_CameraDistance)>10) //后面的逻辑主要是 内外摄像机切换的时候他们两个必定是初始值不一样的,所以当检测到明显的差距那么初始值就重新赋值一下              {                  distance = transposer.m_CameraDistance;              }*/              //distance += delta_z;              transposer.m_CameraDistance += delta_z;
           }
  if (Input.GetAxis("Mouse ScrollWheel") != 0)
           {              CinemachineVirtualCamera virtualCamera = cam as CinemachineVirtualCamera;              CinemachineComponentBase body = virtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Body);              if (body is not CinemachineFramingTransposer)              {                  return;              }              CinemachineFramingTransposer transposer = (body as CinemachineFramingTransposer);              float cameraDistance = transposer.m_CameraDistance;              if (GameUtil.IsPointerOverUI(Input.mousePosition))              {                  return;              }              float delta_z = -Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed;        /*      if (distance == 0 ||Mathf.Abs(distance-transposer.m_CameraDistance)>10) //后面的逻辑主要是 内外摄像机切换的时候他们两个必定是初始值不一样的,所以当检测到明显的差距那么初始值就重新赋值一下              {                  distance = transposer.m_CameraDistance;              }*/              //distance += delta_z;              transposer.m_CameraDistance += delta_z;
           }   if (Input.GetAxis("Mouse ScrollWheel") != 0)
           {              CinemachineVirtualCamera virtualCamera = cam as CinemachineVirtualCamera;              CinemachineComponentBase body = virtualCamera.GetCinemachineComponent(CinemachineCore.Stage.Body);              if (body is not CinemachineFramingTransposer)              {                  return;              }              CinemachineFramingTransposer transposer = (body as CinemachineFramingTransposer);              float cameraDistance = transposer.m_CameraDistance;              if (GameUtil.IsPointerOverUI(Input.mousePosition))              {                  return;              }              float delta_z = -Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed;        /*      if (distance == 0 ||Mathf.Abs(distance-transposer.m_CameraDistance)>10) //后面的逻辑主要是 内外摄像机切换的时候他们两个必定是初始值不一样的,所以当检测到明显的差距那么初始值就重新赋值一下              {                  distance = transposer.m_CameraDistance;              }*/              //distance += delta_z;              transposer.m_CameraDistance += delta_z;
           }
 
 
 
 
  | 
 
如果是非虚拟相机则修改position.z轴就行