让游戏支持复杂手势识别

转载 2013年12月02日 16:50:08

给游戏加入复杂手势识别的功能无疑可以大大增加游戏的趣味性,对于像ios、andriod这样的全触控操作系统尤其如此。这篇文章不是讲解手势识别的论证推倒过程(那些公式看着就头疼,毕竟咱是写程序的不是写论文的,这些东东是怎么来的咱不管,能用就好),也不是讲解ios上面UIGestureRecognizer类的应用(这个暂时只能识别轻触滑动等简单的手势,虽然对于普通应用来说已经足够了,但是对于游戏来说还远远不够)。

 

    这篇文章会帮助你让游戏识别三角形、五角星、圆圈、以及任意自定义的复杂图形。并且由于无论是识别算法还是其应用都非常简单,所以你可以零成本的应用于任何你想要使用的地方。

 

    手势识别算法是"$1 Unistroke Recognizer"。

    这个算法实现起来非常简单,但是识别效率很高,这个就有点类似寻路算法中的A*。它足以满足我们在游戏中的需求,所以没有必要再去探讨神经网络、机器学习什么的了。(其实还有一种更简单的识别算法:我们定义八个方向,鼠标移动的时候判断后一个点相对于前一个点的方向,最终组合成一个由字符串组成的手势代码----比如下上代表一个手势,下右代表一个手势,然后对这个代码与模板进行匹配--这个时候匹配的就是字符串的相似度,要简单很多。这也是浏览器中手势识别常用的方法。不过这种方法应用到游戏中效果不如$1,因为$1会对坐标集合进行正规化,即便我画的图形歪了或者有些走样,它都可以很好的识别出来)。

 

    最初知道这么个算法是看了SDL里面的touch gesture的实现(当初还以为它只能识别$美元符号呢,汗),网上有各个语言版本的实现。推荐大家看看这里(http://depts.washington.edu/aimgroup/proj/dollar/),这里有其对应语言版本的下载,大家也可以先在其js测试程序上试一试效果,非常好玩。同时也有其相关论文和改进(比如支持多点触控手势的$N),喜欢钻研的朋友不要错过。

 

    这里推荐这个版本(http://depts.washington.edu/aimgroup/proj/dollar/others/cpp.bw.zip)。c++实现,代码清晰,使用简单。

    1、在初始化的地方new一个GeometricRecognizer实例recognizer_,调用recognizer_->loadTemplates()方法。注意这个函数只是测试时使用,真正设计时,其手势模板应该是从配置文件中读取。

    2、在TouchMove(或者是MouseMove,依平台而定)的时候将坐标push_back到一个集合里(touch_points_)。

    3、在TouchEnd的时候调用: RecognitionResult r = recognizer_->recognize(touch_points_);

    我们对其返回的结果进行判断,如果(r.name != "Unknown" && r.score > 0.5),那么这就是我们识别出来的一个手势。name是手势模板名称,score是其权重,越高则与模板越匹配。

 

    通过简单的几行代码,我们就把手势识别功能加入到游戏中了,这时我们是用其释放魔法,还是做一些特殊的动作都依赖与设计者的创造性了。很有趣,不是吗?

    原文地址: http://blog.csdn.net/langresser_king/article/details/6529334

相关文章推荐

让游戏支持复杂手势识别

    给游戏加入复杂手势识别的功能无疑可以大大增加游戏的趣味性,对于像ios、andriod这样的全触控操作系统尤其如此。这篇文章不是讲解手势识别的论证推倒过程(那些公式看着就头疼,毕竟咱是写程序的...

Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植7:Gesture Recognizer【手势识别】

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17382889 >回顾 【cocos2d-x...

复杂背景手势识别0

  • 2013年06月20日 21:40
  • 927KB
  • 下载

静态手势识别控制游戏方向

  • 2011年08月02日 17:50
  • 5.11MB
  • 下载

Android游戏开发之旅 View中手势识别

有关Android平台的游戏开发中我们需要涉及到控制,在开始的Android游戏开发之旅中我们提到了按键和轨迹球的控制方式,从今天开始Android123开始给出大家游戏中其他的一些控制方式,比如今天...

静态手势识别控制游戏方向

这个主要通过的是静态的手势识别,从而根据判断得到的结果调用模拟键盘相应的W,A,S,D的按下与弹起的API函数,从而实现通过手势即可控制游戏中人物的跑位,和行驶方向。由于自己的电脑很差,运行其来很卡,...

android游戏开发(三)触屏事件处理_手势识别

上一章 我们学习了 android 简单的触摸屏操作  那这一章我们来看看 android 的手势操作   android的手势识别是android更人性化,让我们的操作更简单, 其实我们日常应用中...
  • zwq1457
  • zwq1457
  • 2012年09月18日 14:58
  • 1163

手机网页介绍页,支持手势识别

  • 2017年06月13日 20:40
  • 4.67MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让游戏支持复杂手势识别
举报原因:
原因补充:

(最多只允许输入30个字)