小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

最近在玩间谍鼠这个游戏,其中有一个触屏操作主角移动的方式,就是手指触摸屏幕的轨迹会被记录下来,然后主角顺着轨迹移动,其实这种操作在很多游戏中都有应用,很适合触屏操作。本篇文章就写一个简单的类似例子在cocos2d-x上的实现。

实现思路很简单,首先需要重写以下几个函数来记录触屏轨迹:

virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);

另外我们需要一个CCMutableArray来记录我们的轨迹,我们通过如下方式定义:

CCMutableArray<MyPoint *> * path;

其中MyPoint是我们自己定义的一个CCPoint,为什么需要我们自己定义呢?是因为CCMutableArray要求类型必须具备retain函数,我们自己定义一个MyPoint是为了让它继承retain函数。MyPoint的定义如下:

很简单,就是有x,y,并把它继承于CCNode就可以了。

下面首先看ccTouchesBegan函数:

首先获得坐标点,其中的一系列转换已经不用多说了,然后我们要获得主角的位置,由于我还是用的A星算法那个场景,所以主角是属于地图的,所以我们要获得主角的绝对坐标,就直接加上地图坐标就是主角在屏幕上的绝对坐标,然后我们判断我们的起始拖动点是否在主角这个矩形范围内,如果在主角这个范围内那么首先清空path数组,然后把这个点加入到path中,并把我们的索引值stepindex设为-5,表示后续的拖动有效,stepindex的初始值为-1,-1表示没有接收到指令,大于0的值就是主角移动

再看ccTouchesMoved函数:

如果stepindex为-5,表示后续的拖动有效,我们继续往我们的path里加入点,要注意要检测以下点是否出屏幕范围,另外还要检测是否合上一个点不同,不同的点我们才会记录

再看ccTouchesEnded函数:

当触屏结束并且stepindex为-5,表示后续的拖动有效时,stepindex设为0,表示主角可以移动

在update中每帧更新主角位置,即遍历一遍path,记住设置主角位置时要主角和地图的相对坐标,当path遍历完成stepindex设为-1,这样记录触屏轨迹并使主角按此轨迹移动的功能就实现了

如有错误之处,希望大家多多指正

下一篇继续游戏实例

cocos2d-x游戏实例(11)-触屏主角移动轨迹相关推荐

  1. 360°平滑游戏摇杆(触屏方向导航)

    Android游戏开发二十四]360°平滑游戏摇杆(触屏方向导航) 本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi ) 转载自[黑米GameDev街区]原 ...

  2. cocos2d-x游戏实例(2)-主角根据输入移动

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 本篇继续上一篇的例子,加入根据触屏操作移动的内 ...

  3. html5 接东西游戏,html5手机触屏接红包小游戏代码

    特效描述:html5手机触屏 接红包小游戏.canvas 红包下落点击接住红包,结束计算金额及红包个数.请用手机扫码打开正常演示. 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 fu ...

  4. 苹果11触屏不灵敏_苹果11刚买没多久总感觉触摸不灵敏怎么回事?

    展开全部 苹果11触摸不灵敏可能是由于部分应用程序引起的,比如一些输入32313133353236313431303231363533e59b9ee7ad9431333433636231法反映迟钝,或 ...

  5. html摇色子游戏,Swipebox – 用于触屏设备的精...-html5摇骰子游戏-lightbox——解析_169IT.COM...

    start: function(imageLink) { hideSelectBoxes(); var arrayPageSize = getPageSize(); Element.setHeight ...

  6. Java游戏触屏处理,非触屏java游戏转换为触屏游戏工具使用方法

    用下面软件可以把非触屏java游戏改为触屏游戏,不会遮挡屏幕,提供了9个可自设触摸键,真是玩rpg类游戏的大福音啊!方法如下: 一.下载HandyPartner.JavaMagic_60b.和halo ...

  7. 【iOS-Cocos2d游戏开发之五】【1】多触点与触屏事件详解(单一监听、事件分发)...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/450.html ...

  8. cocos2d-x 横板游戏触屏人物和背景移动 方法1

    大多横板游戏主角的移动都是有背景一起在移动的,不单单是主角在动.当主角的位置离地图的左端距离小于屏幕宽度的一半或者主角离地图最右端的距离小于屏幕宽度的一半时,触屏之后就人物在移动,背景没有动,当主角位 ...

  9. 【iOS-Cocos2d游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)

    李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/450.html------- ...

最新文章

  1. 我怎么在AD里面找到已经改名的Administrator账户?
  2. 【算法与数据结构】B-树学习笔记
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式类和输入序列类型
  4. 日志库EasyLogging++学习系列(3)—— 配置功能
  5. Git:git-pull的用法总结
  6. mySQL教程 第5章 插入 更新与删除数据
  7. 播撒汗水,收获希望!
  8. 嵌入式Linux入门8:rootfs移植
  9. oracle archivelog满了,Oracle archivelog占用100%如何处理?
  10. java 缓存ech_java ehcache 分布式缓存配置实例 .
  11. linux命令iconv_Linux中iconv命令的简介和使用方法
  12. 关于appium的下载安装及环境配置(含nodejs下载安装)
  13. Word 分节设置不同起始页码
  14. vmware运行虚拟机ubuntu,电脑就重启
  15. 如何高效搜索公众号文章(r11笔记第35天)
  16. 想不想修真鸿蒙源液有什么用,想不想修真初代小世界怎么玩_想不想修真初代小世界玩法介绍_玩游戏网...
  17. ai怎么渐变颜色_AI里面怎么弄渐变色,哪位高手指点下啊?
  18. 论文 Through Fog High Resolution Imaging Using Millimeter Wave Radar 复现
  19. origin2019插入图片_Origin绘图时在新图层中添加新图的方法
  20. 学生用计算机M十,计算机中的M十是什么意?

热门文章

  1. PageHelper概述与基本使用步骤介绍
  2. ES6新特性之class类的基本语法
  3. 统计输入的字符串中各种字符的个数
  4. java 中组合与复用_Java 代码复用(组合与继承)
  5. Netty--Future和Promise
  6. mysql linux-syn25000是什么_当MySQL数据库遇到Syn Flooding
  7. Linux文件目录命名规则
  8. brk(), sbrk() 用法详解【转】
  9. 150929.js过完
  10. ×××:关于促进云计算创新发展 培育信息产业新业态的意见