unity 使用kienct制作项目--华山论剑

        使用kinect制作的一款姿势识别体感项目。能识别4种姿势,普通攻击(左手或右手向前击出)、金钟罩(两手张开画圆)、如来神掌(双掌合十然后右手击出)、九阳神功(双手举起)。

        插件我就不说了,自己上网找下就是了。我主要说下怎么识别自定义手势的问题。可以参考kinect插件自带案例。

        主要脚本有3个:KinectManager、KinectGestures、MyGestureListener,前2者是插件自带脚本,后者是参考手势案例拷贝的一份脚本稍加改变的脚本。KinectManager脚本我们不用管,主要是后面2个脚本。我们需要在场景种创建一个空物体,然后挂上这3个脚本,大概是这样的。

        我们先看KinectGestures脚本,先找到public enum Gestures枚举,这个就是所有的手势定义,在枚举后面加上我们自定义的手势名称。

 系统会自定义一些常见的关节点,如果我们需要用到新的关节,需要我们自己进行添加。代码里红色框部分就是我自己添加的关节点。先放一个kinect关节图方便大家了解。

 

 自定义新的关节后,还需要在下面的GetNeededJointIndexes函数里做修改

之后在CheckForGesture函数里添加自定义手势识别代码。参考其它手势的代码做修改就行了。

然后再来看MyGestureListener脚本代码,也是参考案例脚本的。先添加自定义变量

然后在UserDetected函数里添加代码

 再在GestureCompleted函数里添加代码

 这样自定义手势识别就完成了,之后就是使用了。我是在场景脚本SceneBase中使用手势识别的。

MyGestureListener的初始化函数:

public void Init()
    {
        normalAtkLeft = false;
        normalAtkRight = false;
        jinzhongzhao = false;
        rulai = false;
        jiuyang = false;
    }

SceneBase脚本:

protected void OnEnable()
    {
        MyGestureListener.Instance.Init();//所有手势变量赋值为false
    }

 红框1部分是识别到其它玩家时会自动清除玩家数据重新识别新的玩家,不然可能会识别不到新的玩家。

红框2部分就是识别到自定义手势所做的操作了,这样kinect识别自定义手势功能就完成了。

猜你喜欢

转载自blog.csdn.net/qq_34256136/article/details/127789201