Kinect2.0 UI交互 InteractionManager脚本

Kinect2.0 UI交互

Kinect官方已经SDK已经打包好了UI交互脚本InteractionManager
使用:

将手所在的image拖入到GUI Hand Cursor,脚本会通过GUI Hand Cursor 获取到手的对象
playerIndex : 用户当前的index坐标,kinect设备最多可识别6个人,kinect会将识别到的人添加到一个list中,index代表用户在list中的下标。
leftHandInteraction
rightHandInteraction :脚本识别的手,为true则识别对应的手,如两个手都是true,会出现左右手混乱的现象,建议只设置一个为true

smoothFactor : 当handOverCursor为false时,手的移动灵敏度,月底则越慢,是用Lerp实现的,每个手对应一个lerp。

Grip Hand Texture : 手握拳时手显示的图片
Release Hand Texture : 手松开时手显示的图片
Normal Hand Texture : 标准状态下显示的图片(上面两项为空时,显示Normal,优先显示上面两项)

handOverlayCursor:为True时,手的坐标会跟随用户手的位置,当kinect与人的距离较远时,手移动到屏幕边缘会比较困难。为False时,手会延伸出一个插值,整个屏幕都可以够到,ui交互,建议用true。

就我个人而言下面的基本不用

↓↓↓
allowHandClicks : 手在ui上停留两秒则进行点击,握拳也可以判断抓取,但手抓取的位置不怎么准
allowPushToClick : 手向前推则进行点击

controlMouseCursor : 是否用手控制鼠标,如无必要不建议使用,调试的时候如果不知道快捷键,暂停程序都得校准会儿位置,kinect判断抓取用的是手指部分不是手腕,有多坑,自己试试就知道了。。。
controlMouseDrag : 是否可以用手抓住进行拖动
↑↑↑

采坑经验:

  • 当通过kinectManager.SetPrimaryUserID() 设置主用户id后,如果跳转场景,InteractionManager的index识别到的用户可能和当前主用户识别到不一致,可能会出现左边的人可以用手势,右边的人可以通过手进行交互,个人解决方法如下

void Update()
{
	if(InteractionManager.Instance)
	{
		long userid = KinectManager.GetPrimaryUserID();
		InteractionManager.Instance.playerIndex = KinectManager.Instance.GetBodyIndexByUserId(userid);
	}
}
  • 当挂载两个InteractionManager脚本时,更改用户id只会更改一个,另一个不会更改,个人解决方法:复制一个脚本出来,一个脚本挂载一个手
  • 当前手在屏幕的中心点的位置是按照身体的中心点判定的,如果感觉不适,可以更改Update中的一些代码进行更改:
void Update()
{
	if (!handOverlayCursor)
	{
		//在减去leftIboxLeftBotBack.x或y的基础上再减去一个值 0.1f~0.3f
		leftHandScreenPos.x = Mathf.Clamp01((leftHandPos.x - leftIboxLeftBotBack.x) / (leftIboxRightTopFront.x - leftIboxLeftBotBack.x));
		leftHandScreenPos.y = Mathf.Clamp01((leftHandPos.y - leftIboxLeftBotBack.y) / (leftIboxRightTopFront.y - leftIboxLeftBotBack.y));
		......
	}
}
  • cursorProgressBar.fillAmount = cursorClickProgress 控制手的进度圈,如果自己写的话记得注释这句代码
  • 更改手的image是没用的,要更改normal hand texture 或者上面两种状态的图片
  • 后续如果还有坑,会继续更新,暂时只想到这么多。。。
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值