从Prefabs里拖入LMHeadMountedRig
然后给LeapHandController上添加四个手,如图所示:
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151352413-2080297582.png)
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151353210-450482683.png)
手从Prefabs文件夹中选择。
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151353554-1721565453.png)
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151353820-425890725.png)
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151354335-1422767211.png)
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151354632-375260046.png)
点击运行,就可以发现手已经出现了
选中CenterEyeAnchor,将override eye position勾掉
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151355007-435362047.png)
如果不勾掉的话就会出现重影的效果
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151355320-1164572759.jpg)
然后运行之后就可以了
![](https://images2015.cnblogs.com/blog/782258/201604/782258-20160418151355773-1391957704.jpg)
如果要使用api接口,要引入Leap.Unity命名空间。官方文档上讲,在unity使用的时候,要通过LeapProvider来访问,使用LeapController的话要进行手动转换空间坐标
using UnityEngine;
using System.Collections;
using Leap.Unity;
using Leap;
public class Test : MonoBehaviour {
LeapProvider provider;
// Use this for initialization
void Start () {
provider = FindObjectOfType<LeapProvider>() as LeapProvider;
}
// Update is called once per frame
void Update () {
Frame frame = provider.CurrentFrame;
foreach (Hand hand in frame.Hands)
{
if (hand.IsLeft)
{
transform.position = hand.PalmPosition.ToVector3() +
hand.PalmNormal.ToVector3() *
(transform.localScale.y * .5f + .02f);
transform.rotation = hand.Basis.Rotation();
}
}
}
}
要使用hand和Finger的话,必须是来自于Frame,所以首先通过provider初始化当前这一帧。然后把这个脚本绑定到一个GameObject上,启动播放,可以发现GameObject随着左手的移动而移动。
吐槽一下Leapmotion,官网上连个教程都没有,文档太少了。只有这么个简单的示例,哎!