Unity中如何为相机缩放(拉近/拉远)添加范围限制?
给Unity鼠标滚轮缩放添加范围限制的实现方法
要给你的滚轮缩放功能加上范围限制,只需要两步:添加可配置的范围参数,再用Mathf.Clamp()方法把缩放值限制在设定区间内。
修改后的完整代码如下:
using UnityEngine; public class MouseWheelZoom : MonoBehaviour { [SerializeField] private float ScrollSpeed = 10; // 正交模式下的缩放范围 [SerializeField] private float MinOrthographicSize = 2f; [SerializeField] private float MaxOrthographicSize = 20f; // 透视模式下的缩放范围 [SerializeField] private float MinFieldOfView = 10f; [SerializeField] private float MaxFieldOfView = 60f; private Camera ZoomCamera; private void Start() { ZoomCamera = Camera.main; } void Update() { if (ZoomCamera.orthographic) { // 计算新的正交大小,再限制范围 float newSize = ZoomCamera.orthographicSize - Input.GetAxis("Mouse ScrollWheel") * ScrollSpeed; ZoomCamera.orthographicSize = Mathf.Clamp(newSize, MinOrthographicSize, MaxOrthographicSize); } else { // 计算新的视野范围,再限制范围 float newFov = ZoomCamera.fieldOfView - Input.GetAxis("Mouse ScrollWheel") * ScrollSpeed; ZoomCamera.fieldOfView = Mathf.Clamp(newFov, MinFieldOfView, MaxFieldOfView); } } }
关键说明:
- 新增的四个序列化参数可以直接在Unity编辑器里调整,不用改代码就能适配不同场景需求
Mathf.Clamp(value, min, max)是Unity内置方法,会把传入的value强制限制在min和max之间,超过上限就取上限,低于下限就取下限- 保留了原代码对正交/透视相机的兼容逻辑,两种模式下的缩放范围可以独立配置
内容的提问来源于stack exchange,提问作者Dan Nguyen
相关产品推荐
相关产品推荐

