1.使用 leapmotion 自带的案例下继续开发

2.结构图如下:

3.在 Button1 上增加一个 Collider

4.新建一个脚本,为了能识别左手和右手的食指,判断先后关系,进行同样的逻辑处理,所以我的代码会比较复杂点(如果只是识别一个手的食指就简单多了),将 BonesL和BonesR 的数组赋值,请一一对应,左手的赋值,右手的你自己来吧

5.代码如下:

using System.Collections;
using System.Collections.Generic;
using Leap;
using Leap.Unity;
using UnityEngine;
using UnityEngine.UI;
public class JudgeHandDetector : MonoBehaviour {public Transform[] bonesL;public Transform[] bonesR;public HandModelBase leftHand;public HandModelBase rightHand;List<HandModelBase> handModelList = new  List<HandModelBase>();// Update is called once per framevoid Update () {// 如果两个手都没有识别 清空 list 表if (!leftHand.IsTracked){if (handModelList.Contains(leftHand)){handModelList.Remove(leftHand);}}if (!rightHand.IsTracked){if (handModelList.Contains(rightHand)){handModelList.Remove(rightHand);}}// 鼠标移动 根据 list[0] 去操作,判断识别手的先后关系if (leftHand!= null && leftHand.IsTracked){if (!handModelList.Contains(leftHand)){handModelList.Add(leftHand);}}if (rightHand != null && rightHand.IsTracked){if (!handModelList.Contains(rightHand)){handModelList.Add(rightHand);}}if (handModelList.Count > 0){IndexDetector();}}Ray ray;/// <summary>/// 左右手食指识别 进入相同的处理逻辑/// </summary>void IndexDetector(){if (handModelList[0] == leftHand){JudgeIndexDetector(bonesL);}else{JudgeIndexDetector(bonesR);}}/// <summary>/// 判断食指识别/// </summary>/// <param name="bones"></param>void JudgeIndexDetector(Transform[] bones){if (bones[1].position.z > bones[0].position.z && bones[1].position.z > bones[2].position.z &&bones[1].position.z > bones[3].position.z && bones[1].position.z > bones[4].position.z){print("这个傻逼伸出了邪恶的食指");DealRay(bones[1].position);}}/// <summary>/// 处理射线得到的信息/// </summary>void DealRay(Vector3 RayPointV3){Vector2 screenPos = Camera.main.WorldToScreenPoint(RayPointV3);ray = Camera.main.ScreenPointToRay(screenPos);RaycastHit[] hit = Physics.RaycastAll(ray, 2000f, 1 << LayerMask.NameToLayer("UI")); ;if (hit.Length > 0){for (int i = 0; i < hit.Length; i++){Debug.Log("检测到物体" + hit[i].collider.name);BtnEvent(hit[i].transform);}}}void BtnEvent(Transform btn){switch (btn.name){case "Button1":btn.GetComponentInChildren<Text>().text = "把你的脏手从 Button1 上拿开";break;case "Button2":break;case "Button3":break;case "Button4":break;case "Button5":break;case "Button6":break;default:break;}}
}

5.对了 我的 canvas 是世界坐标的

6.效果图如下:

第二种方法 在你的脚本上增加一个插件自带的 ExtendedFingerDetector.cs 脚本

 if (ShowGizmos && HandModel != null && HandModel.IsTracked) {PointingState[] state = { Thumb, Index, Middle, Ring, Pinky };Hand hand = HandModel.GetLeapHand();int extendedCount = 0;int notExtendedCount = 0;Finger thumbFinger = hand.Fingers[0];Finger indexFinger = hand.Fingers[1];if (thumbFinger.IsExtended&&!indexFinger.IsExtended){print("大拇指张开,食指不张开");}}

Unity + LeapMotion 识别食指伸出以及食指与 UGUI的 交互相关推荐

  1. Unity LeapMotion SDK 基础讲解

    Unity LeapMotion SDK 基础讲解 LeapMation SDK 下载 LeapMation Unity 示例场景 下载 LeapMotion 组件解析 LeapServiceProv ...

  2. lua------------------Unity3D研究院编辑器之打开unity不可识别的文件(十三)

    Unity3D研究院编辑器之打开unity不可识别的文件(十三) 雨松MOMO [Unity3D拓展编辑器] 围观8597次 9 条评论 编辑日期:2017-03-02 字体:大 中 小 有些特殊后缀 ...

  3. Unity 程序始终显示在最上层,并且保持交互。

    做项目遇到一个需求,需要是unity打包出来的程序在运行的时候窗口最大化,并且保持在最上层,最难的是要时刻保持交互,不然输入控制会失效,网上百般查询和亲自验证后,利用window自带的方法实现窗口置顶 ...

  4. unity + leapMotion 判断手指捏合(拇指和食指)

    代码比较简单,我就不解释了 1.结构图如下: 2.代码如下: using System.Collections; using System.Collections.Generic; using Lea ...

  5. Unity LeapMotion入门

    首先是硬件的安装,安装硬件的应用软件Leap_Motion_Setup_4.0.0+52173.exe,按照提示默认安装,安装好之后,插入leapmotion硬件,将绿色灯的一面朝向自己.运行软件Le ...

  6. Unity人脸识别(一),基于百度大脑的Unity3dC#简单的人脸对比(搜索)功能,适合小白入门

    离线版人脸识别参考我的另外一篇博客:https://blog.csdn.net/GottaYiWanLiu/article/details/90442274 最近忽然对物联网开发蛮感兴趣,但无奈物联网 ...

  7. unity碰撞检测识别对象的几种方法,刚体篇

    文章目录 一. 指定碰撞层级 二. 指定Collider组件的标签 三. 判断物体的类型 四. 判断物体的名字 一. 指定碰撞层级 可以在物体的Collider组件中设置碰撞层级,只有属于指定层级的物 ...

  8. unity LeapMotion 手势旋转,位移,缩放

    代码有需要完善的地方,博主只是简单的实现了功能,具体细节要看需求, 如果有问题可以给我留言或者加qq群:636926481,望指教 using Leap; using System.Collectio ...

  9. 删除 jar 的 asset_【unity游戏开发】SDK学习(1)-C#与jar交互

    引言 通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成 对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里, 而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感, ...

  10. Unity 制作萌系live2d桌宠:屏幕自适应+交互

    目录 准备工作 使用unity显示live2d人物 全屏+背景透明+点击穿透+置顶 屏幕自适应 交互 本文在之前的博客如何使用unity制作萌萌的live2d桌宠的基础上对项目继续改进,解决了屏幕自适 ...

最新文章

  1. 快速搭建对话机器人,就用这一招!
  2. IIS出现server application error,请问怎么解决?
  3. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!
  4. (C)libnet-发送arp/tcp/icmp数据包
  5. SparkSql学习笔记(包含IDEA编写的本地代码)
  6. JUC与JVM并发编程学习笔记04
  7. JS内置对象练习(慕课网题目)
  8. 应用程序热补丁(一):如何用几行代码打造应用程序热补丁
  9. java能调用易语言的dll文件_易语言调用模块和DLL的方法教学
  10. SECOND点云检测代码详解
  11. 程序员必须了解的知识点——你搞懂mysql索引机制了吗?
  12. swift中检测跳转苹果自带地图、高德地图、百度地图、腾讯地图
  13. 阿里云服务器部署网站
  14. RPA-艺赛旗iS-RPA Studio 9.0 Beta 现已发布
  15. Unity个人开发中的踩坑记录(混沌式更新)
  16. kubernetes(k8s)部署微服务并通过ingress实现外部访问
  17. PHP版本Google广告admob服务端回调验证SSV
  18. fft2 二维快速傅里叶变换(Matlab)
  19. Centos7 Mysql5.6.40 高可用架构--MHA
  20. C# 实现打印机功能

热门文章

  1. 结构方程模型自由度和卡方值为0(零)怎么办?
  2. 苹果电脑安装双系统有必要吗?
  3. moya + RxSwift 进行网络请求
  4. 饥荒控制台输入没用_饥荒控制台怎么用 控制台的使用方法以及代码说明解析...
  5. 关于网站被挂马的症状以及处理解决方法
  6. Openssl漏洞修复
  7. 如何搭建一个asp网站(具体操作流程——详细步骤+图)(Windows server2003 和 Windows server2008)
  8. 显示前半内容后半内容用省略号_省略号前后的标点用法
  9. 《嵌入式系统 – NUC980 IoT应用开发实战指南(基于RT-Thread系统)》第3章 NUC980 IoT I2C实践
  10. 液晶显示屏的分辨率详解?