Unity 간단 한 제스처 인식 실현

3207 단어 unity제스처 인식
본 논문 의 사례 는 유 니 티 가 제스처 인식 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
코드 는 간단 하고 난이도 가 없 으 며 주해 가 있어 서 마음대로 합 니 다. 딱 봐 도 알 겠 다.
CallEvent()방법 은 자체 탑재 해서 사용 해 야 한다.
Unity 코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
///     
/// </summary>

public class PlayerAnimator_ZH : MonoBehaviour
{
 //         
 public Vector2 _MousePos;
 //    
 public GestureState _GestureStateBe;
 //      
 private float _MinGestureDistance = 20.0f;
 //      
 private bool _IsInvaild;
 
 void Update()
 {
  //    
  GestureOnClick();
 }

 //    
 public void GestureOnClick()
 {
  //    
  _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;
     }
     else if (_Dis.x < 0)
     {
      //        X    0    Lift   
      _GestureStateBe = GestureState.Lift;
     }
    }
    //       X      Y 
    else if (Mathf.Abs(_Dis.x) < Mathf.Abs(_Dis.y) && _IsInvaild)
    {
     if (_Dis.y > 0)
     {
      //        Y    0    Up   
      _GestureStateBe = GestureState.Up;
     }
     else if (_Dis.y < 0)
     {
      //        Y    0    Down   
      _GestureStateBe = GestureState.Down;
     }
    }
    //      
    _IsInvaild = false;
   }   
  }
 }

 //    
 public void CallEvent()
 {
  switch (_GestureStateBe)
  {
   case GestureState.Null:

    // Null     (   )

    break;

   case GestureState.Up:

    // Up     (   )

    break;

   case GestureState.Down:

    // Down     (   )

    break;

   case GestureState.Lift:

    // Lift     (   )

    break;

   case GestureState.Right:

    // Right     (   )

    break;

   default:
    break;
  }
 }

 //    
 public enum GestureState
 {
  Null,
  Up,
  Down,
  Lift,
  Right
 }
}
사실 코드 는 보충 도 할 수 있 습 니 다.예 를 들 어 왼쪽 위,왼쪽 아래,오른쪽 위,오른쪽 아래,중첩 등 이 있 습 니 다.문제 가 있 으 면 저 에 게 전화 하 세 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기