第一個leapmotion的小游戲


自從看過leapmotion的宣傳視頻,就被吸引住了。覺得這東西遲早要替代鼠標,然后關注了一年多leapmotion的動態,終於在今年8月份入手了一只。//675大洋啊,心疼~

一直想寫份評測,一直想做個小應用玩玩,然而一直拖着沒做。

擱置了幾個月后,終於心血來潮,山寨了個簡單的小游戲,然后調用leapmotion來控制。//成就感倍增啊!!!

 

第零節——遲到的leapmotion簡單評測

下了幾個小游戲,以及試了下谷歌地球。

谷歌地球可以用leapmotion操作前進后退、轉向和縮放等,但是感覺不太適應操作。比如縮放,縮放完成后,手要離開leapmotion檢測區域,否則手恢復原狀態,縮放又倒回去了。

小游戲玩法都比較簡單,leapmotion個的新操作都用上了不少,比如檢測多個手指,手指的方向,轉圈和搖動等手勢。

偶爾會有手指位置卡一下或跳一下的現象(可能是檢測到腦袋了?)。玩久了胳膊很累。時間長了,leapmotion也比較熱。

實際用起來,沒有宣傳片中那么炫。期望比較大,有點小失望。不過想起了世界上第一輛火車跟馬車比賽,結果火車輸了的故事。作為一個新興事物,我還是很看好它的。

 

第一節——小游戲介紹

原來是一個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的應用,有什么新的點子及想法,還請多多指教。

附上源程序:源程序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM