Unity中指数函数实现越来越快或者越来越慢的变化控制

本文介绍如何在Unity中通过指数和对数函数实现数值变化的加速与减速效果。通过计算指数曲线和对数函数,实现UI数字由慢至快或由快至慢的平滑过渡。代码示例分别用于初始化和Update阶段,并提供了自定义曲线以调整变化趋势。同时,为避免对数计算时的越界问题,采用scale处理确保计算范围在e^10以内。
摘要由CSDN通过智能技术生成

       有时需要这样的效果:UI的数字从一个值变化到另一个值,是一个不断增大的过程,而且是一种由慢变快的过程。就实现这种效果来说,可以DoTween这类组件实现,也可以用unity的曲线AnimationCurve实现。这里说的是另外一种方式,就是自己实现指数增长变快的过程。

       指数曲线和函数,中学就学过。它一条很陡峭的曲线,大白话就是越来愈大,而且变的越来越快。

  我们可以先把变化区间从指数公式计算出来,当时y的开始和结束,x轴看成时间。然后用累计时间在y的开始和结束之间做插值,这里给出两段代码,分别用到初始化和Update中

        //变化范围
        int change = target - orgNum;
        //指数, 指数范围即是时间范围
        beginExp = 0; //e^beginExp =1
        endExp = Mathf.Log(change); // e^endExp = change
        currExp = Mathf.Lerp(beginExp, endExp, currveVale);
        currNum = orgNum + (int)Mathf.Exp(currExp);

      这里第二段代码用在update里,没有直接使用插值结果,而是让用户有更多的选择,用一条曲线让用户选择,再去控制这个变化趋势。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值