Unity Kinect 使用记录(二)

第一步:SDK导入

1、导入kinect sdk (Kinect v2 Examples with_2.13)。

2、导入后文件

Unity Kinect 使用记录(二)_第1张图片

3、场景挂载Kinect Manager脚本

Unity Kinect 使用记录(二)_第2张图片 

4、在Kinect Manager脚本的Player Common Gesture项中设置要检测的姿势,否则kinect不检测姿势

 Unity Kinect 使用记录(二)_第3张图片

 5、检测姿势脚本:只要挂载Kinect Manager脚本和下方 Lesson 脚本即可检测相应姿势。

 

public class Lesson : MonoBehaviour, KinectGestures.GestureListenerInterface
{
    //用户离开
    public void UserLost(long userId, int userIndex)
    {
        EventCenterManager.Instance.Dispatch(E_KinectCommend.UserLost);
    }
    //检测到用户
    public void UserDetected(long userId, int userIndex)
    {
        EventCenterManager.Instance.Dispatch(E_KinectCommend.UserDetected);
    }
    //手势进行中
    public void GestureInProgress(long userId, int userIndex, KinectGestures.Gestures gesture, float progress, KinectInterop.JointType joint, Vector3 screenPos)
    {

    }
    //手势检测完成
    public bool GestureCompleted(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint, Vector3 screenPos)
    {
        Debug.Log("用户所做的姿势类型gesture");
        //用户所做的姿势类型gesture
        switch (gesture)
        {
            case KinectGestures.Gestures.None:
                break;
            case KinectGestures.Gestures.Tpose://T型
                EventCenterManager.Instance.Dispatch(E_KinectCommend.Tpose);
                break;
            case KinectGestures.Gestures.Wave: //挥手
                EventCenterManager.Instance.Dispatch(E_KinectCommend.Wave);
                break;
            case KinectGestures.Gestures.SwipeLeft:
                EventCenterManager.Instance.Dispatch(E_KinectCommend.SwipeLeft);
                break;
            case KinectGestures.Gestures.SwipeRight:
                EventCenterManager.Instance.Dispatch(E_KinectCommend.SwipeRight);
                break;
            case KinectGestures.Gestures.SwipeUp:
                EventCenterManager.Instance.Dispatch(E_KinectCommend.SwipeUp);
                break;
            case KinectGestures.Gestures.SwipeDown:
                EventCenterManager.Instance.Dispatch(E_KinectCommend.SwipeDown);
                break;
            case KinectGestures.Gestures.Jump://跳
                EventCenterManager.Instance.Dispatch(E_KinectCommend.Jump);
                break;
            case KinectGestures.Gestures.Squat: // 蹲下
                EventCenterManager.Instance.Dispatch(E_KinectCommend.Squat);
                break;
            case KinectGestures.Gestures.Run://走
                EventCenterManager.Instance.Dispatch(E_KinectCommend.Run);
                break;
            case KinectGestures.Gestures.MoveLeft:  //左移
                EventCenterManager.Instance.Dispatch(E_KinectCommend.MoveLeft);
                break;
            case KinectGestures.Gestures.MoveRight://右移
                EventCenterManager.Instance.Dispatch(E_KinectCommend.MoveRight);
                break;
            default:
                break;
        }

        return true;
    }
    //手势取消
    public bool GestureCancelled(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint)
    {
        return true;
    }

    /*
     * 
RaiseRightHand/RaiseLeftHand 抬起左右手高于肩膀一秒
Psi 举起双手高于肩膀一秒
Tpose T姿势
Stop 右手放下,左手缓慢贴住身侧(腰以下)或者左右调换
Wave 挥手 左右都行
SwipeLeft 右手挥向左侧
SwipeRight 与上面相反
SwipeUp/SwipeDown 左右都行 上下翻动
ZoomOut 一开始左右手合并放在前面,然后向不同方向分开
ZoomIn 一开始两手相距0.7米以上并放在前面,然后慢慢合并
Wheel 左右手在前面相距肩膀宽度距离,软后抓住假想方向盘转动
Jump 在1.5秒内屁股至少在高度上上升了10cm
Squat 蹲下 在1.5秒内屁股至少在高度上下降了10cm
Push 用左手或者右手在1.5秒内向前推
Pull 用左手或者右手在1.5秒内后拉
LeanLeft 右侧肩向前,也就是向左侧身
LeanRight 与上面相反
KickLeft 向前踢左脚
KickRight 向前踢右脚

ShoulderLeftFront左肩向前
ShoulderRightFront右肩向前
LeanLeft,   前后左右倾斜
LeanRight,
LeanForward,
LeanBack,
RaisedRightHorizontalLeftHand 水平举起左右手
RaisedLeftHorizontalRightHand
TouchRightElbow,   触碰左右手肘
TouchLeftElbow,
MoveLeft  左右移动
Moveright
       */
}

你可能感兴趣的:(Kinect,unity,游戏引擎)