Kinect V2 多关节捕捉应用中break 与 continue的妙用
2016-08-10 14:30
971 查看
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 frame void 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; } } } } } }
相关文章推荐
- 孙其功陪你学——之Kinect开发之结合Unity3D进行游戏应用开发关节对应
- Ubuntu_ROS中应用kinect v2笔记
- 21天学通c++之7.4 continue与break应用
- Ubuntu_ROS中应用kinect v2笔记
- 控制跳转语句break ,continue,return 的应用场景和区别
- 【JS】Label & break/continue语句的应用
- C语言----for语句,break和continue的应用与区别
- break; continue; goto; return在循环中的应用
- 重学Python - Day 03 - python基础 -> while循环实例 + Continue && break的应用 + 列表的初步学习
- JQuery问题集锦:使用jquery中的each函数时,需要break、continue的应用场景解决办法
- break和continue的区别--应用实例
- Ubuntu_ROS中应用kinect v2笔记
- for应用,转义字符,break和continue的区别
- java中的BREAK和CONTINUE语句的应用
- C# 跳转语句(break,continue,goto,return,throw)
- continue break
- JavaScript Break 和 Continue区别教程
- Java中带标签的 break 和 continue
- break和continue的实现
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(二)BREAK和CONTINUE的区别