Kinect V2 多关节捕捉应用中break 与 continue的妙用

来源:互联网 发布:whip it 编辑:程序博客网 时间:2024/05/16 03:40
using UnityEngine;using System.Collections;using UnityEngine.UI;public class UseKinectPosTwoPeople : MonoBehaviour {    public bool[] bools = new bool[32];    public Text numTxt;    public Image[] images = new Image[32];    private int[] jointTypes = new int[25];    // Use this for initialization    void Start () {    for(int i = 0; i < 32; i++)        {            bools[i] = false;        }        //特征点        for (int i = 0; i < 25; i++)        {            jointTypes[i] = i;        }    }// Update is called once per framevoid Update () {        bool isInit = KinectManager.Instance.IsInitialized();  //检测设备可用        if (isInit)        {            if (KinectManager.Instance.IsUserDetected())            {                //检测到玩家                long userId = KinectManager.Instance.GetPrimaryUserID();  //获取用户id                long userId2 = 0;                //KinectManager.Instance.GetAllUserIds();                int count = KinectManager.Instance.GetUsersCount();                numTxt.text = "usersCount = " + count;                if (count == 2)                {                    userId = KinectManager.Instance.GetUserIdByIndex(0);                    userId2 = KinectManager.Instance.GetUserIdByIndex(1);                }                for (int i = 0; i < 32; i++)                {                    Image img = GameObject.Find("startAniImg" + (i + 1)).GetComponent<Image>();                    bool isFind = false;  //找到//上半身                    for(int j=0; j<11; j++)                    {                        if (KinectManager.Instance.IsJointTracked(userId, jointTypes[j]))                        {                            Vector3 pos = KinectManager.Instance.GetJointKinectPosition(userId, jointTypes[j]);  //1.获取关节点3D坐标                            Vector3 screenPos = Camera.main.WorldToScreenPoint(pos);  //2.关节点坐标转换成屏幕坐标                            if (RectTransformUtility.RectangleContainsScreenPoint(img.rectTransform, screenPos, null))                            {                                GameObject.Find("startAniImg" + (i + 1)).GetComponent<StartAnimationClass>().isPlay = true;                                bools[i] = true;                                isFind = true;                                break;                            }                        }                        if (count == 2)                        {                            if (KinectManager.Instance.IsJointTracked(userId2, jointTypes[j]))                            {                                Vector3 pos2 = KinectManager.Instance.GetJointKinectPosition(userId2, jointTypes[j]);  //1.获取关节点3D坐标                                Vector3 screenPos2 = Camera.main.WorldToScreenPoint(pos2);  //2.关节点坐标转换成屏幕坐标                                if (RectTransformUtility.RectangleContainsScreenPoint(img.rectTransform, screenPos2, null))                                {                                    GameObject.Find("startAniImg" + (i + 1)).GetComponent<StartAnimationClass>().isPlay = true;                                    bools[i] = true;                                    isFind = true;                                    break;                                }                            }                        }                    }                    if (isFind)                    {                        continue;                    }                    if (bools[i])                    {                        GameObject.Find("startAniImg" + (i + 1)).GetComponent<StartAnimationClass>().isPlay = false;                        GameObject.Find("startAniImg" + (i + 1)).GetComponent<StartAnimationClass>().isClose = true;                        bools[i] = false;                    }                }                            }        }    }}

0 0
原创粉丝点击