unity 2017.3 + vuforia 7.0 之 利用滑动屏幕与AR对象进行交互

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Testiness_Wind/article/details/79387589

今天琢磨了一下滑动的实现,我希望实现的功能呢,是用户在手机上滑动一下手指,AR物体就旋转一下,当然用户左滑左转,右滑右转。利用射线获取到用户看到的AR模型,然后实现滑动屏幕旋转AR模型。

先上代码:

版本号:untiy 2017.3

首先是定义的字段

    private Vector3 firstPos;//玩家初次点击的位置
    private Vector3 currentPos;//玩家当前点击的位置
    private float time1;//计时器 记录玩家滑动屏幕的时间长短
    private float time2=0.01f;//限定的时间间隔


然后是PC端的滑动,也就是鼠标点击滑动,这个可以用来在unity进行测试。

特别提示,不能写在FixedUpdate()中(别问我怎么知道的,试试就懂了)。

void Update()
    {
        #region 鼠标滑动检测
        if (Input.GetMouseButtonDown(1))//记录玩家鼠标点击时的位置和时间信息
        {
            firstPos = Input.mousePosition;
            currentPos = Input.mousePosition;
            time1 = 0;
        }
        if (Input.GetMouseButton(1))//记录玩家鼠标滑动时的位置和时间信息
        {
            currentPos = Input.mousePosition;
            time1 += Time.deltaTime;
        }
        if (Input.GetMouseButtonUp(1))//记录玩家鼠标抬起时的位置和时间信息
        {
            if (time1 > time2)
            {
                if (currentPos.x < firstPos.x)
                {
                    print("向左滑动");
                }
                if (currentPos.x > firstPos.x)
                {
                    print("向右滑动");
                }
            }
        }
        #endregion
}


最后是移动端的代码。也就是手指触摸屏幕滑动

void Update()
    {
        #region 触摸滑动检测
        if (Input.touchCount == 1)//判断用户一根手指触摸屏幕
        {
            if(Input.GetTouch(0).phase == TouchPhase.Began)//按下
            {
                firstPos = Input.GetTouch(0).position;
                currentPos = Input.GetTouch(0).position;
                time1 = 0;
            }
            if (Input.GetTouch(0).phase == TouchPhase.Moved)//移动
            {
                currentPos = Input.GetTouch(0).position;
                time1 += Time.deltaTime;
            }
            if (Input.GetTouch(0).phase == TouchPhase.Ended)//抬起
            {
                if (time1 > time2)
                {
                    if (currentPos.x < firstPos.x)
                    {
                        print("向左滑动");
                    }
                    if (currentPos.x > firstPos.x)
                    {
                        print("向右滑动");
                    }
                }
            }
        }
        #endregion
    }


看一下涉及到的几个API:

扫描二维码关注公众号,回复: 3130125 查看本文章

1.Input

Input是unity中所有输入指令的基类。

2.Input.GetMouseButtonDown(int button)

如果用户按下指定键,则返回一个true。

0代表左键,1代表右键,2代表中键。

3.Input.mousePosition

返回鼠标所在位置的位置信息,只读,返回值为Vector3类型。

4.Input.touchCount

用户触摸屏幕的点的数量,相当于用户用几根手指触摸,只读类型。

5.Input.GetTouch(int index).phase

描述触摸的阶段或者说是状态,状态共有四种,返回值是TouchPhase类型,这里引用一下圣典

6.Input.GetTouch(int index).position

记录触摸点的位置信息,返回值是Vector2类型。

猜你喜欢

转载自blog.csdn.net/Testiness_Wind/article/details/79387589