【小松教你手游开发】【unity实用技能】unity 更漂亮的位移

更漂亮的位移指的是先慢再快再慢的这种位移,更像现实中的位移。也叫平滑阻尼。


这里有两种实现方式:

1.通过计算值:调的函数是Mathf.SmoothStep

例:

        float t = 0;
        // Update is called once per frame
        void Update()
        {
            if(sprite.fillAmount != 1 && transform.gameObject.activeSelf)
            {
                t += Time.deltaTime/5;
                if (m_startAction)
                {
                    sprite.fillAmount = Mathf.SmoothStep(sprite.fillAmount, 1, t);
                }
                else
                {
                    sprite.fillAmount = 1;
                }
            }
     
     
        }
     
        public void PerformAction()
        {
            m_startAction = true;
        }


2.通过向量Vector3:调的函数是Vector3.SmoothDamp

例:

            if (_buttonUp)
            {
                AddingFriendButton.transform.localPosition = Vector3.SmoothDamp(AddingFriendButton.transform.localPosition, _tabOriginalPosition, ref _velocity, 0.2f);
                if (Vector3.Distance(AddingFriendButton.transform.localPosition, _tabOriginalPosition) < 0.01)
                    _buttonUp = false;
            }

 

3.通过向量Vector3,设定持续时间,

        Vector3 org = new Vector3();
        Vector3 vec = new Vector3();
        Vector3 _velocity = new Vector3();
        public void RotateCameraFromGesture(Vector3 delta)
        {
            org = SceneCameraGameObject.transform.localEulerAngles;
            vec = org;
     
            vec.y += delta.x * 5;
            vec.x += delta.y * -5;
            vec.z = 0;
     
            vec = Vector3.SmoothDamp(org, vec, ref _velocity, 1f);
            if (vec.x < 0)
                vec.x = 0;
            if (vec.x > 45)
                vec.x = 45;
            SceneCameraGameObject.transform.localEulerAngles = vec;
     
            //SceneCamera.transform.Rotate(new Vector3(-delta.y * 0.1f, 0, delta.x));//这个根据世界坐标转,上下左右转就出问题了
        }
---------------------  
作者:chrisfxs  
来源:优快云  
原文:https://blog.youkuaiyun.com/chrisfxs/article/details/50436738  
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值