LeapMotion을 사용하여 Live 2D 역할 접촉

13606 단어 Live2DLeapMotionUnity

LeapMotion을 사용하여 Live 2D 역할 접촉



개요


Live 2D SDK의 SampleApp1에 LeapMotion을 연결하여 추가 기능을 시도해 보십시오.
Leap Motion의 값을 사용하여 역할을 터치해 보십시오.

개발 환경

  • Live2D_SDK_Unity_2.0.08_1_jp
  • Unity 5.0.1f1
  • 방법


    차리다


    SDK 다운로드(Live 2D SDK Unity 2.0.08 1 등)
    http://www.live2d.com/download
    SDK 테스트 신청 후 다운로드
    모델 그리기 및 작업 확인
    SDK 다운로드 후 Sample/Simple 확인 동작 열기
    이번에는 Sample/SampleApp1을 사용하겠습니다.

    Leap Motion을 통해 얻은 값을 모델에 반영합니다.


    연상 설정
    LeapMotion_CoreAsset_2_2_4. unitypackage 가져오기
    프로젝트에 LeapMotion/Prefabs/HandController를 Hierarchy에 추가
    HandController의 Position을 X=0, Y=-10, Z=-7로 설정
    Hand Movement ScalleX로 설정 = 5, Y=3, Z=3
    실행 후 모델 앞에 손 표시가 있는지 확인
    TestScript.프로젝트로 cs 복사
    test.cs
    using UnityEngine;
    using System.Collections;
    using Leap;
    
    public class TestScript : MonoBehaviour {
        Controller controller;
    
        void Start ()
        {
            controller = new Controller();
            //gesture
            controller.EnableGesture(Gesture.GestureType.TYPECIRCLE);
            controller.EnableGesture(Gesture.GestureType.TYPEKEYTAP);
            controller.EnableGesture(Gesture.GestureType.TYPESCREENTAP);
            controller.EnableGesture(Gesture.GestureType.TYPE_SWIPE);
        }
    
        void Update ()
        {
            Frame frame = controller.Frame();
            // do something with the tracking data in the frame...
            if (! frame.Hands.IsEmpty) {
                var hand = frame.Hands[0];
                var gestures = frame.Gestures();
    
                for (int i = 0; i < hand.Fingers.Count; i++) {
                    //人差し指
                    if (hand.Fingers[i].Type() == Finger.FingerType.TYPE_INDEX){
                        //Debug.Log (hand.Fingers[i].TipPosition.x);
                        var fingerPosition = hand.Fingers[i].TipPosition;
    
                        for ( int gi = 0 ; gi < gestures.Count ; gi++ ) {
                            // ジェスチャー結果取得&表示
                            Gesture gesture = gestures[gi];
                            switch ( gesture.Type ) {
                            case Gesture.GestureType.TYPECIRCLE:
                                var circleGesture = new CircleGesture(gesture);
                                Debug.Log("Circle");
                                if(circleGesture.State == Gesture.GestureState.STATEUPDATE){
                                    //そっちを向かせる(ドラッグと同じ
                                    LAppLive2DManager.Instance.TouchesMoved(new Vector3((fingerPosition.x-20.0f+(UnityEngine.Screen.width/2)),(fingerPosition.y*2 - (UnityEngine.Screen.height)/2),0));
                                }
                                break;
                            case Gesture.GestureType.TYPEKEYTAP:
                                var keytapGesture = new KeyTapGesture(gesture);
                                Debug.Log("KeyTap");
                                if(keytapGesture.State == Gesture.GestureState.STATESTOP){
                                    //Debug.Log (fingerPosition.x+","+fingerPosition.y+","+fingerPosition.z);
                                    //20.0fはx軸に対するずれ軽減用
                                    LAppLive2DManager.Instance.TouchesEnded(new Vector3((fingerPosition.x-20.0f+(UnityEngine.Screen.width/2)),(fingerPosition.y*2 - (UnityEngine.Screen.height)/2),0));
                                }
                                break;
                            case Gesture.GestureType.TYPESCREENTAP:
                                var screenTapGesture = new ScreenTapGesture(gesture);
                                Debug.Log("ScreenTap");
                                break;
                            case Gesture.GestureType.TYPE_SWIPE:
                                var swipeGesture = new SwipeGesture(gesture);
                                Debug.Log("Swipe");
                                //LAppLive2DManager.Instance.ChangeModel(); //モデル変更
                                break;
                            default:
                                break;
                            }
                        }
    
                    }
                }
    
            }
        }
    }
    
    MainCamera 등에 첨부

    좋은 웹페이지 즐겨찾기