Unity学习笔记:第一人称瞄准镜距离切换

  点击鼠标右键 调整视角距离,使用数学算法让视角切换,有一个由快到慢的速度。

知识点:数学算法Lerp  数值增长由大变小 (无限接近 永远不会等于终点值)Mathf.Abs 绝对值↓

if (isFar)
        {
            //拉远 20  --》 60        Lerp(起点、终点、比例)
            camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 60, 0.1f);
              //由快到慢无限接近(不会等于终点)所以用绝对值推一下让他提前结束 节省多余的运算
        if (Mathf.Abs(camera.fieldOfView-60)<0.1f){
                 camera.fieldOfView=60;
           }

        }
        else
        {
            //拉近 60 --》 20
            camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f);
        }

  完整功能代码↓

    private Camera camera;
    //60    50  40  30    20用来设置多档视角距离
    public float[] zoomLevels;
    private int indes;

    private void Start()
    {
        //camera = GetComponent<Camera>();
        camera = Camera.main;//GameObject.FindWithTag("MainCamera")
    }

    private void Update()
    {
        Zoom();
    }

    private void Zoom()
    {
        if (Input.GetMouseButtonDown(1))
        {
            //修改缩放等级
            //indes++;
            //超过范围 从0开始
            //indes= currentLevel < zoomLevels.Length - 1 ? currentLevel + 1 : 0;
            indes= (currentLevel + 1) % zoomLevels.Length;
        }
        camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevels[indes], 0.1f); 
          if (Mathf.Abs(camera.fieldOfView-zoomLevels[indes])<0.1f){
                 camera.fieldOfView=zoomLevels[indes];
           }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值