c语言可以kinect编程,Unity使用Kinect初级教程

using UnityEngine;

using UnityEngine.UI;

using System.Collections;

using System;

public class MyGestureListener : MonoBehaviour, KinectGestures.GestureListenerInterface

{

public Text gestureInfo;

private bool state = false;//识别状态,0表示未识别,1表示已识别

public float intervalTime = 5.0f;

private bool intervalBegin = false;

private int quiet = ;

private float quiettime = 5.0f;

public enum 手势

{

剪刀,

石头,

}

private 手势 RandomShoushi()

{

System.Random ran = new System.Random();

int randomnum = ran.Next(, );

return (手势)randomnum;

}

private string getInfo(KinectInterop.HandState show, 手势 shoushi)

{

string info = string.Empty;

switch (show)

{

case KinectInterop.HandState.Closed:info= "你出的是石头\n";

break;

case KinectInterop.HandState.Lasso: info = "你出的是剪刀\n";

break;

case KinectInterop.HandState.Open:info= "你出的是布\n";

break;

default: info = "请出招...\n";

return info;

}

switch (shoushi)

{

case 手势.石头:

info += "电脑出的是石头\n";

break;

case 手势.剪刀:

info += "电脑出的是剪刀\n";

break;

case 手势.布:

info += "电脑出的是布\n";

break;

}

int res = contrast(show, shoushi);

if (res == )

{

info += "哈哈哈,你赢了\n";

}

else if (res == -)

{

info += "哈哈哈,你输了\n";

}else if (res == )

{

info += "哈哈哈,平手";

}

else

{

info += "你的手势未识别";

}

state = true;//识别完成

return info;

}

private int contrast(KinectInterop.HandState show,手势 shoushi)

{

int rssult = ;

switch (show)

{

case KinectInterop.HandState.Closed:

switch (shoushi)

{

case 手势.石头:rssult = ;

break;

case 手势.剪刀:

rssult = ;

break;

case 手势.布:

rssult = -;

break;

}

break;

case KinectInterop.HandState.Lasso:

switch (shoushi)

{

case 手势.石头:

rssult = -;

break;

case 手势.剪刀:

rssult = ;

break;

case 手势.布:

rssult = ;

break;

}

break;

case KinectInterop.HandState.Open:

switch (shoushi)

{

case 手势.石头:

rssult = ;

break;

case 手势.剪刀:

rssult = -;

break;

case 手势.布:

rssult = ;

break;

}

break;

default:rssult = ;

break;

}

return rssult;

}

void Update()

{

if (intervalBegin)

{

if (intervalTime > )

{

intervalTime -= Time.deltaTime;

}

else

{

intervalBegin = false;

intervalTime = 5.0f;

state = false;

}

}

if (!state)

{

KinectManager _manager = KinectManager.Instance;

long userid = _manager.GetUserIdByIndex();

gestureInfo.text=getInfo(_manager.GetRightHandState(userid), RandomShoushi());

}

if (quiet==)

{

gestureInfo.text = "再右挥一次就不跟你玩了...";

if (quiet == )

{

Debug.Log("退出");

Application.Quit();

}

if (quiettime < )

{

quiet = ;

quiettime = 5.0f;

gestureInfo.text = "请出招...";

}

else

{

quiettime -= Time.deltaTime;

}

}

}

public void UserDetected(long userId, int userIndex)

{

//throw new NotImplementedException();

KinectManager manager = KinectManager.Instance;

manager.DetectGesture(userId, KinectGestures.Gestures.SwipeLeft);

}

public void UserLost(long userId, int userIndex)

{

//throw new NotImplementedException();

}

public void GestureInProgress(long userId, int userIndex, KinectGestures.Gestures gesture, float progress, KinectInterop.JointType joint, Vector3 screenPos)

{

//throw new NotImplementedException();

}

public bool GestureCompleted(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint, Vector3 screenPos)

{

//throw new NotImplementedException();

if (gesture== KinectGestures.Gestures.SwipeLeft)

{

intervalBegin = true;

gestureInfo.text = "准备出招...";

}

if (gesture == KinectGestures.Gestures.SwipeRight)

{

quiet++;

}

return true;

}

public bool GestureCancelled(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint)

{

//throw new NotImplementedException();

return true;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值