Unity leapmotion开发实录(4)
本系列文章将会从一个初学者的脚步去讲解unity和leapmotion协同开发的一系列问题:
特:本人水平有限所以有错误请及时指正
本人也会引用一些代码如果有所侵犯请联系删除
自2015.11.22开始周更
本周着重开始讲解leap开发中的实际问题
首先我们必须对一些核心的脚本进行熟悉 明白他们的工作原理 :
1.重中之重simple.cs
作为官方编写的文档 几乎出现了所有的api 函数所有的返回数据 所有的方法 除去一些需要自己经验的写法 基本全部囊括其中了 但是 以下代码 基本见不到了simple.cs的影子
鉴于是教程 那我的定位是代码讲解 采取分立介绍最后汇总 不是铺陈代码
tip :
以下代码片段都不是直接复制粘贴就能运行的 小白还是回去看我之前的内容
以下代码片段都不是直接复制粘贴就能运行的 小白还是回去看我之前的内容
以下代码片段都不是直接复制粘贴就能运行的 小白还是回去看我之前的内容
头文件部分 因为设计到了一些list 或是一些UI绘制 所以头文件显得多了一些(当然以后会更多)
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;
using Leap;
using System.Collections.Generic;
在脚本类中的定义工作 (以后的脚本基本基于以下定义工作,如不作特殊说明则默认为以下定义)
public HandController hc; //控制器
private HandModel hm; //手部模型
public GameObject cubePrefab; //可不定义
public Vector squizehand; //紧握得手vector
private GameObject cube = null;
Frame currentFrame = null;//定义当前帧
Frame lastFrame = null;//上一帧
函数部分
借助返回的数据 我们可以设计更多的手势 比如在大量测试后 我们发现35左右的值在leap设计中是关键的参数所以:
bool squize(float radius)//判断手势是否为握持 阀值为35
{
if (radius < 37)
return true;
else
return false;
}
另外 如果你有自己的想法 或是对返回值有所要求or不想用官方给的东西 那么可以自己写一个判断双手距离的函数:
double distance(Vector a,Vector b)//双手距离判断 退出机制触发阀值为35
{
double c=Math.Sqrt (Math.Pow ((a.x-b.x), 2) + Math.Pow ((a.y-b.y), 2) + Math.Pow ((a.z-b.z), 2));
Debug.Log ("TWO hand distance="+c);
return c;
}
以上两个非常简单的函数共同使用 就诞生了更多的用法 我们后续会介绍 并且经过测试 其稳定性甚至要高于某些官方的预制手势
那好既然说道预制手势 下面我们就来讨论一下 预制手势的用法:
首先需要在start()中定义 打开预制手势:
hc.GetLeapController().EnableGesture(Gesture.GestureType.TYPECIRCLE); //环绕
hc