LeapMotion을 사용하여 Live 2D 역할 접촉
13606 단어 Live2DLeapMotionUnity
LeapMotion을 사용하여 Live 2D 역할 접촉
개요
Live 2D SDK의 SampleApp1에 LeapMotion을 연결하여 추가 기능을 시도해 보십시오.
Leap Motion의 값을 사용하여 역할을 터치해 보십시오.
개발 환경
방법
차리다
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 등에 첨부
Reference
이 문제에 관하여(LeapMotion을 사용하여 Live 2D 역할 접촉), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shima07/items/c60675997ec56bf8f4c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)