美文网首页
unity 相机惯性滑动

unity 相机惯性滑动

作者: Albert_d37d | 来源:发表于2023-08-30 13:47 被阅读0次

    using UnityEngine;

    using HedgehogTeam.EasyTouch;

    public class TouchManager : MonoBehaviour

    {

        //上次鼠标位置

        Vector2 prevMousePos = Vector3.zero;

        //滑动结束时的瞬时速度

        Vector3 Speed = Vector3.zero;

        //每帧偏差

        Vector3 offSet = Vector3.zero;

        //鼠标开始位置

        Vector3 startMousePosition = Vector3.zero;

        //速度衰減率

        public float decelerationRate = 0.1f;

        //摄像机

        public Camera m_camera;

        void Update()

        {

            HandleMouseInput();

        }

        private void HandleMouseInput()

        {       

            //按下时记录位置

            if (Input.GetMouseButtonDown(0))

            {

                prevMousePos = Input.mousePosition;

                startMousePosition = Input.mousePosition;

            }

            //移动时更新位置

            if (Input.GetMouseButton(0))

            {

                Vector3 curMousePosition = Input.mousePosition;  //当前鼠标的屏幕坐标系

                //偏差值

                offSet = m_camera.ScreenToWorldPoint(curMousePosition) - m_camera.ScreenToWorldPoint(prevMousePos);

                prevMousePos = curMousePosition;

                //瞬时速度

                Speed = offSet / Time.deltaTime;

            }

            else  //最后递减

            {

                Speed *= Mathf.Pow(decelerationRate, Time.deltaTime);

                if (Mathf.Abs(Vector3.Magnitude(Speed)) < 1)

                {

                    Speed = Vector3.zero;

                }

            }

            Move(Speed);

        }

        public void Move(Vector3 speed)

        {

            if (Vector3.Magnitude(Speed) == 0)

            {

                return;

            }

            m_camera.transform.localPosition -= speed * Time.deltaTime;       

        }

    }

    相关文章

      网友评论

          本文标题:unity 相机惯性滑动

          本文链接:https://www.haomeiwen.com/subject/egfamdtx.html