简书链接: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轴就行