我的编程空间,编程开发者的网络收藏夹
学习永远不晚

游戏开发基础教程:Cocos2D-X之手势识别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

游戏开发基础教程:Cocos2D-X之手势识别

  我们在手机游戏中经常会看到类似于水果忍者等用手势操作的手机游戏,那么这些游戏是怎么识别手势的呢?本篇教程将带你深入了解Cocos2d-x中如何实现手势识别。

  在本教程中,即将带来的是在cocos2d-x里面使用手势识别,然后写一个带有手势识别的游戏。该游戏的功能是,当手势是↑,↓的时候,忍者就跳跃,当手势是↓,↓,↑的时候,忍者发射一颗子弹,当手势是↑,↓,↓的时候,忍者发射一个飞镖。呵呵,什么乱七八糟的动作,不过,手势识别并入游戏还是很不错的感觉。

 

  现在新建一个工程,命名为cocos2dGestureDemo,和前面的教程一样,openXLive不需要,并且也添加了需要的Lib和修复之。并且添加所以图片到Image文件夹。

 

  现在先添加一个类GestureScene到Classes。并且让之继承于CCScene。修改代码如下:

游戏开发基础教程:Cocos2D-X之手势识别_Cocos2D-X手势_Cocos2D-X教程_Cocos2D-X基础_编程学习网

  并且修改appDelegate的Launch方法。

  现在,基本工作就做好了。

  现在来说下手势识别的问题吧。在cocos2d-x,没有封装关于手势识别的东西,没办法,我们只有用基础的XNA的手势识别了。

 

  那么,现在来添加手势识别吧。在GestureLayer类中添加一个声明:

  CCLabelTTF title;

  接着在init方法添加代码:

  添加一个方法:

  上面我们做了什么呢,如果看了上述提到的MSDN的文章应该都懂了,不过也来解释下吧。在上面,注册了TouchPanel的手势识别时间,在周期执行的gestureRecognize里面,先判断是否有手势没处理,如果有,就进行处理。

  编译运行,你就能看到label的改变了。

  具有手势识别的游戏

  接下来做点有趣的事情吧。做我们想要的拥有手势识别功能的游戏。曾记得,NDS的游戏就是如此手势识别,什么上上下干什么动作,下下上做什么动作,。。。。那么来实现下吧。

  我们所有的操作都在GestureLayer这个层上面。

  先添加些声明:

  Dictionary> gestureAction;

  List> matchGesture;

  float intervalTime = 0;//动作间隔时间

  int gestureTime = 0;//第几次动作

  float recognizeTime = 0.2f;//识别时间

  CCSprite player;

  上面定义了些变量,我们怎么做手势识别呢,Dictionary定义了所有动作的集合,matchGesture来保存匹配的手势。intervalTime来判断上一动作和下一动作间隔的时间,如果时间超过0.8秒。那么就执行系列动作需要产生的效果。recognizeTime是一个识别动作间隔时间的常量,这个使动作间隔稳定些,使动作更容易判断。

  因为我们只需要竖直方向的移动的手势识别。那么添加并且修改init方法:

  initGestureLib();

  TouchPanel.EnabledGestures = GestureType.VerticalDrag;

  player = CCSprite.spriteWithFile(@"images/Player");

  player.position = new CCPoint(100, 200);

  this.addChild(player);

  this.schedule(gestureRecognize);

  上面我们添加了一个player,并且修改手势注册只有竖直方向的移动。

  修改gestureRecognize方法并且添加一个方法:

  上面,我们初始化了手势动作的集合并且修改了gestureRecognize方法只能识别竖直移动。

  下面,我们要对手势来进行识别,要怎么做呢,首先,应该识别手势是上还是下的。然后先判断如果是第一个动作,从gestureAction里面找匹配的并且添加到matchGesture里面,不是第一个动作的话,就从matchGesture里面寻找list中该位置是否和这个动作一致,不一致就从matchGesture中移除。简单来说,动作的识别就是一遍遍遍历matchGesture,不一致的移除,剩下的就是和动作匹配的啦。接下来添加一些方法。

  上面的方法做了些什么呢,如果仔细看,应该能看出,收集动作并且做动作筛选,主要做法就是遍历和匹配,每次收集动作结束的时候,要把intervalTime置为0,并且把当前动作个数加1.

  当要完成动作效果gestureDoAction的时候,就要先判断matchGesture里面的东西了,是否为空,或者没有最匹配的(也就是里面的list的count没有和gestureTime相同,就没有最合适的动作序列)。

  如果有,就执行动作,先从Dictionary里面取出相对应的key。然后开始执行相应的动作,下面的方法应该都很熟悉了,就是执行了一些动作。

  下面,主要的来了。修改gestureRecognize如下:

  上面做了些什么呢,先判断intervalTime,也就是距离上次动作的时间,如果大于0.8秒,那么就执行相应系列动作的效果,不然,如果gesture的Delta值的Y值不等于0(我经过检测,发现即使在竖直移动,Y值也可能等于0),并且intervalTime大于一定值,就收集动作,为什么呢,因为我发现,如果一开始就搜集手势,手势就多而且有可能不是需要的,因为基本第一触点的效果不好,而且大家都不太在乎。

  那么现在可以来运行下了。在模拟器上,用鼠标代替手指划,是不是已经达到想要的效果了呢,如果没有,请观察debug窗口,那里应该输出了你的手势动作的相关信息,查看是否是想要的手势。

  现在在模拟器已经能不错的识别手势动作了。但是在真机上呢,在我的T8788上面,手势动作的识别效果不太好,毕竟手和鼠标的动作效果不太一样。鼠标的效果还不错主要是我多次尝试调节intervalTime,recognizeTime数值的效果,我想,要在真机上很好的识别,也要多次尝试调节这两个数值,或者增加更好的手势的获取和判断方法。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

游戏开发基础教程:Cocos2D-X之手势识别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

游戏开发基础教程:Cocos2D-X之手势识别

编程学习网:我们在手机游戏中经常会看到类似于水果忍者等用手势操作的手机游戏,那么这些游戏是怎么识别手势的呢?本篇教程将带你深入了解Cocos2D-X中如何实现手势识别。
游戏开发基础教程:Cocos2D-X之手势识别

在Cocos2D-X游戏开发中多线程基础教程

编程学习网:应该又部分同学试过要将Cocos2D的项目转移到Cocos2D-X上吧,在Cocos2D的多线程项目跟Cocos2D-X的实现不一样哦,本篇教程将解读Cocos2D-X中的多线程。
在Cocos2D-X游戏开发中多线程基础教程

编程热搜

  • 教你如何为你的Cocos2D-X资源加密解密
    编程学习网:我们平时在用Cocos2D-X时都不想让别人看到自己的文件,本篇教程将教你如何为你的Cocos2D-X资源加密解密。
    教你如何为你的Cocos2D-X资源加密解密
  • 教你如何用Cocos2D实现3d效果
    编程学习网:经过了之前几篇教程,相信各位同学已经对Cocos2D不陌生了,本篇教程将教你如何用Cocos2D实现3d效果。
    教你如何用Cocos2D实现3d效果
  • 零基础学习之教你如何用Cocos2D实现画中画效果
    编程学习网:没学过Cocos2D?没关系,多看看我们的教程,一步步成为游戏开发大神。本篇教程将教你如何用Cocos2D实现画中画效果。
    零基础学习之教你如何用Cocos2D实现画中画效果
  • 解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
    编程学习网:相信有一部分同学都经历过将项目从Cocos2D-X2转到Cocos2D-X3的麻烦,本篇教程将解析将项目从Cocos2D-X2转到Cocos2D-X3的过程。
    解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
  • 游戏脚本设计基础教程
    编程学习网:类游戏编程,特别是RPG脚本起着驱动整个游戏进程的作用。事件的运作建立在脚本的基础上,而脚本的设计建立在引擎的基础上,所以设计脚本之前因该想一想引擎,好的脚本对剧情的描述具有简单、准确的性质。
    游戏脚本设计基础教程
  • 成为游戏设计师必须具备的条件
    编程学习网:很多人喜欢玩游戏,他们总在不停感叹:这款游戏实在太精彩了,我要是能设计出这样的游戏就!而在他们行动之前,还有许多需要解答的问题罗列在前,我要如何成为游戏设计师?我需要具备哪些技能和素质?游戏设计师究竟在做什么工作?那么,游戏设计师有哪些任务呢?我们将讨论这个问题。
    成为游戏设计师必须具备的条件
  • 贪食蛇小游戏开发设计基础教程
    编程学习网: 贪吃蛇是家喻户晓的益智类小游戏,大家小时候应该都有玩过,编程学习网这里就不多介绍了,本教程将教你用MicrosoftVisualC++来制作它。
    贪食蛇小游戏开发设计基础教程
  • 成为优秀的Cocos2D程序员需要的十个品质
    编程学习网:相信各位同学都在为了成为优秀的Cocos2D程序员而奋斗着,那么一个优秀的Cocos2D程序员需要具备什么品质呢?本篇教程为你揭秘成为一个优秀的Cocos2D程序员所需要的十个品质。
    成为优秀的Cocos2D程序员需要的十个品质
  • Unity3d脚本基础
    最好用游戏引擎开发游戏,推荐Unity3D引擎,该引擎学习更简单,更易上手。游戏引擎可以编辑你的游戏场景、角色和游戏需要的东西。还有,学习编写脚本。编写脚本实际上就是编程。例如,你要在游戏中按键盘方向键来控制角色行走,这必须通过编写脚本。因此,脚本是游戏的逻辑。小编推荐你去学C编程,Unity3D通常是用C语言编写的。
    Unity3d脚本基础
  • 实例教程解析制作flash小游戏
    编程学习网:flash小游戏在游戏开发中是属于比较简单的类型,本例为FlashAS3.0实例教程,介绍射击类游戏的制作,主要分游戏界面的制作和类的编写两部分,从简单的开始做起,跟着教程动手做做看吧。
    实例教程解析制作flash小游戏

目录