1.在unity中新建一個項目。導入
2.將leaphandcontroller拖到hierarchy中。
3.創建一個空物體。hierarchy中右鍵選擇create empty,重命名爲HandModels。
然後把assets/prefabs/HandModelsNonhuman中的capsulehand_R,capsulehand_L拖到HandModels下。
再把assets/prefabs/HandModelsPhysical中的RigidRoundHand_R,RigidRoundHand_L拖到HandModels下。
4.然後點擊leapmotioncontroller,在inspector視窗中添加hand pool插件。size設爲2。(兩個元素,一個方圖形手,一個放物理手。)做如下圖設置。
這裏left model和right model直接將hierarchy中的相應模型拖進去即可。下面兩個參數記得打上勾。將handModels拖到Models Parent中。
5.運行之後就可以在窗口中看到兩隻手。如果看不到可以調節一下相機的位置。
這樣就可以在unity中看到自己的雙手了。如果不想自己調節,也可以直接使用核心包中的預設場景。在leapmotion/scenes中選擇leap_hands_demo_desktop即可。(因爲我只用了leapmotion並沒有使用頭盔設備選擇desktop就可以了)如果有疑惑可以看我翻譯的leapmotion文檔(3)
接下來想利用leapmotion監測手來移動場景中的物體。
1.先建立一個cube。
2.創建一個c#腳本。
using UnityEngine;
using System.Collections;
using Leap;
using Leap.Unity;
public class NewBehaviourScript : 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();
}
}
}
}
3.然後將腳本拖到cube物體上。運行即可。
在這一步中,我調了很久。一開始把代碼複製過去,會報錯。顯示未能解析主引用LeapCSharp.NET3.5。這導致代碼裏所有的finger類型,hand類型都找不到。解決方法是右鍵點擊項目選擇options。然後在build-general中將target framework改成mono/.NET.4.0版本。
如果還有錯可以試下重新下載unity,我用的版本是unity5.4.2。
然後注意一定要導入核心包,因爲代碼裏using Leap.Unity就是引用了核心包裏一些函數。