leapmotion開發(3)實例操作

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就是引用了核心包裏一些函數。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章