using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class UseOverKinectManager : MonoBehaviour {
public RawImage kinectImg;
public Canvas canvas;
public Image rightHand;
public Image btn1;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
bool isInit = KinectManager.Instance.IsInitialized(); //檢測設備可用
if (isInit) {
// print("width = " + KinectManager.Instance.GetDepthImageWidth() + " height = " + KinectManager.Instance.GetDepthImageHeight()); //寬高
//設備準備好了 可以讀取了
if (kinectImg.texture == null)
{
Texture2D kinectPic = KinectManager.Instance.GetUsersClrTex(); //從設備獲取彩色數據
// Texture2D kinectPic = KinectManager.Instance.GetUsersLblTex(); //獲取深度數據量
kinectImg.texture = kinectPic; //把彩色數據給控件顯示
}
if (KinectManager.Instance.IsUserDetected())
{
//檢測到玩家
long userId = KinectManager.Instance.GetPrimaryUserID(); //獲取用戶id
int jointType = (int)KinectInterop.JointType.HandRight;
if (KinectManager.Instance.IsJointTracked(userId,jointType))
{
//關節點被追蹤到
Vector3 rightHandPos = KinectManager.Instance.GetJointKinectPosition(userId, jointType); //1.獲取關節點3D座標
Vector3 rightHandScreenPos = Camera.main.WorldToScreenPoint(rightHandPos); //2.關節點座標轉換成屏幕座標
Vector2 rightHandSenPos = new Vector2(rightHandScreenPos.x, rightHandScreenPos.y);
// print("x = " + rightHandScreenPos.x + " y = " + rightHandScreenPos.y);
Vector2 rightHandUguiPos;
if(RectTransformUtility.ScreenPointToLocalPointInRectangle((RectTransform)canvas.transform, rightHandSenPos, null,out rightHandUguiPos))
{
//表示右手在矩形範圍內
RectTransform rightRectTf = rightHand.transform as RectTransform;
rightRectTf.anchoredPosition = rightHandUguiPos;
}
if (RectTransformUtility.RectangleContainsScreenPoint(btn1.rectTransform,rightHandSenPos,null))
{
//手在按鈕1上懸停
// print("手在按鈕1上懸停");
KinectInterop.HandState rightHandState = KinectManager.Instance.GetRightHandState(userId);
if (rightHandState == KinectInterop.HandState.Closed)
{
//print("握拳選擇了");
}
}
else
{
// print("離開");
}
}
}
}
}
}
Kinect for Unity V2 代碼示例(二)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.