Uniyt简单的手势识别

此简单的手势识别可以根据输入识别出上下左右,识别的原理如下:

首先获取用户按下的点的坐标,再根据用户滑动一段距离产生一个向量
比较该向量与X轴、Y轴夹角的值,得到方向。
与Y轴夹角小于45° :上
与Y轴夹角大于135° :下
与轴夹角小于45° :右
与X轴夹角大于135° :左

角度的获取:
根据公式:a * b = | a | * | b | * cosa
计算a向量和b向量的点积 Vector3.Dot(a,b)
通过反三角函数计算得角的弧度 Mathf.Acos()
将弧度转为角度 乘上 Mathf.Rad2Deg

为了简化计算,a、b向量在计算时均用其单位向量,向量单位化 a.normalized

            //向量起点
            Vector3 vec = Input.mousePosition - mousePos;
            if (vec.magnitude > 20)//移动一定距离后计算向量
            {
                var angleY = Mathf.Acos(Vector3.Dot(vec.normalized, Vector2.up)) * Mathf.Rad2Deg;//与Y轴夹角
                var anglex = Mathf.Acos(Vector3.Dot(vec.normalized, Vector2.right)) * Mathf.Rad2Deg;//与X轴夹角
                if (angleY <= 45)
                {
                   //上
                }
                else if(angleY >=135)
                {
                   //下
                }
                else if (anglex <= 45)
                {
                    //右
                }
                else if(anglex>=135)
                {
                    //左
                }
             }

猜你喜欢

转载自blog.csdn.net/sinat_37888718/article/details/80325924