You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:20:36