自從看過leapmotion的宣傳視頻,就被吸引住了。以爲這東西早晚要替代鼠標,而後關注了一年多leapmotion的動態,終於在今年8月份入手了一隻。//675大洋啊,心疼~線程
一直想寫份評測,一直想作個小應用玩玩,然而一直拖着沒作。視頻
擱置了幾個月後,終於心血來潮,山寨了個簡單的小遊戲,而後調用leapmotion來控制。//成就感倍增啊!!!blog
第零節——遲到的leapmotion簡單評測遊戲
下了幾個小遊戲,以及試了下谷歌地球。ip
谷歌地球能夠用leapmotion操做前進後退、轉向和縮放等,可是感受不太適應操做。好比縮放,縮放完成後,手要離開leapmotion檢測區域,不然手恢復原狀態,縮放又倒回去了。get
小遊戲玩法都比較簡單,leapmotion個的新操做都用上了很多,好比檢測多個手指,手指的方向,轉圈和搖動等手勢。string
偶爾會有手指位置卡一下或跳一下的現象(多是檢測到腦殼了?)。玩久了胳膊很累。時間長了,leapmotion也比較熱。it
實際用起來,沒有宣傳片中那麼炫。指望比較大,有點小失望。不過想起了世界上第一輛火車跟馬車比賽,結果火車輸了的故事。做爲一個新興事物,我仍是很看好它的。io
第一節——小遊戲介紹event
原來是一個HTML5的遊戲,我以爲操做簡單。很適合用leapmotion來操做,就山寨過來了。
玩法:鼠標移動操做弧形擋板,擋住紅色小點,綠色小點補充生命,中間的生命值減到0則遊戲結束。
如下是截圖:
附下載地址:下載
第二節——小遊戲實現思路
如圖。
檢測到輸入時(鼠標移動或leapmotion動做),僅僅改變擋板的角度數值(全局變量)。
用了一個計時器來實時刷新每幀界面。
刷新前還須要對數值進行一些計算和檢測。
A、根據當前難度,小圓點數量不足時,建立一個新的小圓點,根據當前難度隨機生成一些屬性值。大小、角度、速度、顏色等。
B、檢測每一個顯示的小圓點和擋板或核心的碰撞。進行移除小圓點,並計算分數和生命值的操做。
C、移動小圓點
計算完成,依次刷新界面元素。
界面比較簡短,都是用的一些集合圖形。
第三節——添加leapmotion的操控
首先添加引用 LeapCSharp.NET3.5.dll,
而後把 Leap.dll 和 LeapCSharp.dll 放到生成目錄裏。
參考SDK裏面的 Sample.cs 文件,作一下修改。
自定義一個EventArgs類,裏面放一些須要獲取的參數。好比要輸出內容查看,能夠加上 public string msg = "";
而後再定義:public event EventHandler<eventFrame> leapFrame = null;
把裏面全部的相似 SafeWriteLine ("Exited"); 的語句,
改成這樣:if (null != leapFrame) leapFrame(null, new eventFrame("Exited"));
最後,在主程序裏初始化listener後,就能夠經過:
listener.leapFrame += new EventHandler<eventFrame>(listener_leapFrame);
來獲取leapmotion動做了。若是要在界面上輸出查看的話,記得invoke一下,不然不一樣線程沒法操做主界面UI。
我則是獲取了一下平均座標值 Vector avgPos ,用popup控件模擬一個鼠標,而後修改下擋板的角度,就大功告成了!
-------------------------------- 結尾 -----------------------------------
寫的比較倉促,若是有什麼不足的地方,還請你們多多指正。
若是你們對leapmotion的應用,有什麼新的點子及想法,還請多多指教。
附上源程序:源程序