此简单的手势识别可以根据输入识别出上下左右,识别的原理如下:
首先获取用户按下的点的坐标,再根据用户滑动一段距离产生一个向量
比较该向量与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)
{
//左
}
}