之前就玩过 Manomotion ,现在有新需求,重新接入发现不能用了,不管什么办法,都识别不了手势,我记得当初是直接调用就可以的。
经过研究发现,新版本SDK改了写法。下边就写一下新版本的调用,并且实现一个简单的工具脚本。初学者可以参考一下。
主要步骤包含:
1.官网注册
2.创建APP
3.获得APIKey
4.下在SDK导入项目
5.测试使用。
工具脚本如下:
using UnityEngine;
public class ManoHandDetection : MonoBehaviour
{
private bool pick = false;
public bool isPick
{
get
{
if (pick)
{
pick = false;
return true;
}
return false;
}
}
private bool drop = false;
public bool isDrop
{
get
{
if (drop)
{
drop = false;
return true;
}
return false;
}
}
private bool click = false;
public bool isClick
{
get
{
if (click)
{
click = false;
return true;
}
return false;
}
}
private void Start()
{
ManomotionManager.Instance.ShouldCalculateGestures(true);
}
// Update is called once per frame
void Update()
{
GestureInfo gestureInfo = ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info;
DetectionGestureInfo(gestureInfo);
}
private void DetectionGestureInfo(GestureInfo gestureInfo)
{
if (gestureInfo.mano_gesture_trigger != ManoGestureTrigger.NO_GESTURE)
{
switch (gestureInfo.mano_gesture_trigger)
{
case ManoGestureTrigger.DROP:
drop = true;
break;
case ManoGestureTrigger.PICK:
pick = true;
break;
}
}
}
public Vector3 Get_PalmPos()
{
return ManomotionManager.Instance.Hand_infos[0].hand_info.tracking_info.palm_center;
}
public Vector3 Get_POI()
{
return ManomotionManager.Instance.Hand_infos[0].hand_info.tracking_info.poi;
}
}
需要注意的是:
1.新版SDK 需要在Start调用一次Gesture 功能打开开关。
ManomotionManager.Instance.ShouldCalculateGestures(true);
这个开关可以动态打开、关闭。
2.包名要和Manomotion官网保持一致。
3.Key填写的位置ManomotionManager.cs 脚本上。