自从看过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的应用,有什么新的点子及想法,还请多多指教。
附上源程序:源程序