Skip to main content
 首页 » 资源教程 » Unity3D教程

Kinect for Unity V2 代码示例(一)

2016年09月01日 12:32:233450
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using UnityEngine.UI;  
  4.   
  5. public class UseKinectManager : MonoBehaviour {  
  6.   
  7.     public RawImage kinectImg;  
  8.   
  9.     // Use this for initialization  
  10.     void Start () {  
  11.       
  12.     }  
  13.       
  14.     // Update is called once per frame  
  15.     void Update () {  
  16.         bool isInit = KinectManager.Instance.IsInitialized();  //检测设备可用  
  17.         if (isInit) {  
  18.             //设备准备好了  可以读取了  
  19.             if(kinectImg.texture == null)  
  20.             {  
  21.                 Texture2D kinectPic = KinectManager.Instance.GetUsersClrTex();  //从设备获取彩色数据  
  22.                // Texture2D kinectPic = KinectManager.Instance.GetUsersLblTex();  //获取深度数据量  
  23.                 kinectImg.texture = kinectPic;  //把彩色数据给控件显示  
  24.             }  
  25.   
  26.             if (KinectManager.Instance.IsUserDetected())  
  27.             {  
  28.                 //检测到玩家  
  29.                 long userId = KinectManager.Instance.GetPrimaryUserID();  //获取用户id  
  30.   
  31.                 Vector3 userPos = KinectManager.Instance.GetUserPosition(userId);  //获取用户离Kinect的距离信息  
  32.                 //print("x = " + userPos.x + " y = " + userPos.y + " z = " + userPos.z);    
  33.   
  34.   
  35.                 int jointType = (int)KinectInterop.JointType.HandLeft;  
  36.                 if (KinectManager.Instance.IsJointTracked(userId,jointType))  
  37.                 {  
  38.                     //关节点被追踪到  
  39.                     Vector3 leftHandPos = KinectManager.Instance.GetJointKinectPosition(userId, jointType);  
  40.                     //Vector3 leftHandPos = KinectManager.Instance.GetJointPosition(userId, jointType);  //y轴输出不一样   
  41.                    // print("x = " + leftHandPos.x + " y = " + leftHandPos.y + " z = " + leftHandPos.z);  
  42.   
  43.                     KinectInterop.HandState leftHandState =  KinectManager.Instance.GetLeftHandState(userId); //获取左手姿势  
  44.                     if (leftHandState == KinectInterop.HandState.Closed)  
  45.                     {  
  46.                         print("左手握拳");  
  47.                     }else if (leftHandState == KinectInterop.HandState.Open)  
  48.                     {  
  49.                         print("左手张开");  
  50.                     }else if (leftHandState == KinectInterop.HandState.Lasso)  
  51.                     {  
  52.                         print("yes手势");  
  53.                     }  
  54.   
  55.   
  56.                 }  
  57.             }  
  58.               
  59.               
  60.         }  
  61.     }  
  62. }  
评论列表暂无评论
发表评论