Unity实现简单手势识别
本文实例为大家分享了Unity实现手势识别的具体代码,供大家参考,具体内容如下
代码很简单没有难度,都有注解,随便 看一看就会了。
CallEvent()方法需要自己搭载使用。
Unity代码
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; //////手势识别 /// publicclassPlayerAnimator_ZH:MonoBehaviour { //鼠标第一次点击位置 publicVector2_MousePos; //位置枚举 publicGestureState_GestureStateBe; //最小动作距离 privatefloat_MinGestureDistance=20.0f; //手势开启布尔 privatebool_IsInvaild; voidUpdate() { //手势方法 GestureOnClick(); } //手势方法 publicvoidGestureOnClick() { //手势为空 _GestureStateBe=GestureState.Null; if(Input.GetMouseButtonDown(0)) { //第一次鼠标点击位置记录 _MousePos=Input.mousePosition; //开启手势识别 _IsInvaild=true; } if(Input.GetMouseButton(0)) { //鼠标轨迹向量 Vector2_Dis=(Vector2)Input.mousePosition-_MousePos; //画线 Debug.DrawLine(_MousePos,(Vector2)Input.mousePosition,Color.cyan); //判断当前向量的长度是否大于最小动作距离 if(_Dis.magnitude>_MinGestureDistance) { //判断在空间X轴还是在Y轴 if(Mathf.Abs(_Dis.x)>Mathf.Abs(_Dis.y)&&_IsInvaild) { if(_Dis.x>0) { //如果当前向量值X大于0就是Right状态 _GestureStateBe=GestureState.Right; } elseif(_Dis.x<0) { //如果当前向量值X小于0就是Lift状态 _GestureStateBe=GestureState.Lift; } } //判断在空间X轴还是在Y轴 elseif(Mathf.Abs(_Dis.x)0) { //如果当前向量值Y大于0就是Up状态 _GestureStateBe=GestureState.Up; } elseif(_Dis.y<0) { //如果当前向量值Y小于0就是Down状态 _GestureStateBe=GestureState.Down; } } //关闭手势识别 _IsInvaild=false; } } } //呼叫事件 publicvoidCallEvent() { switch(_GestureStateBe) { caseGestureState.Null: //Null方法调用(自己写) break; caseGestureState.Up: //Up方法调用(自己写) break; caseGestureState.Down: //Down方法调用(自己写) break; caseGestureState.Lift: //Lift方法调用(自己写) break; caseGestureState.Right: //Right方法调用(自己写) break; default: break; } } //状态枚举 publicenumGestureState { Null, Up, Down, Lift, Right } }
其实代码还可进行补充,比如左上、左下、右上、右下、叠加等等吧,如有问题就Call我吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。