cocos2d-x游戏实例(11)-触屏主角移动轨迹
来源:互联网 发布:上亿级别数据库表设计 编辑:程序博客网 时间:2024/05/06 14:42
小满(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)-触屏主角移动轨迹
- cocos2d-x游戏实例(11)-触屏主角移动轨迹
- cocos2d-x 触屏主角移动轨迹
- cocos2d-x游戏实例(2)-主角根据输入移动
- cocos2d-x游戏实例(12)-实时拖动主角移动
- cocos2d-x游戏实例(2)-主角根据输入移动
- cocos2d-x游戏实例(12)-实时拖动主角移动
- cocos2d-x游戏实例(1)-视角跟随主角
- cocos2d-x游戏实例(13)-简易摇杆控制主角
- cocos2d-x游戏实例(1)-视角跟随主角
- cocos2d-x游戏实例(13)-简易摇杆控制主角
- 【木头Cocos2d-x 013】游戏实例-《跑跑跑》制作教程(第五篇)——主角上下移动
- Cocos2d-x中的ccTouchesMoved实例:主角随手指移动
- 触屏实例,主角跟随触屏轨迹
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 05.游戏界面 主角飞机的移动
- 【木头Cocos2d-x 010】游戏实例-《跑跑跑》制作教程(第二篇)——加入主角
- 【木头Cocos2d-x 011】游戏实例-《跑跑跑》制作教程(第三篇)——让主角跑
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检测(2)--主角吃金币
- 第22章 项目管理介绍1
- 应用程序配置不正确,程序无法启动
- android 使用showDialog调用相应的对话框
- 字符集GBK和UTF8的区别说明
- 使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 表单上
- cocos2d-x游戏实例(11)-触屏主角移动轨迹
- the young boss‘ concern
- 欢迎界面循环问题解决方法
- struts2自定义拦截器
- struts(当我使用contentPage的时候提示我下载action)(让后我修改成pageEncoding)(可能是因为这一次引入啦新的jar包)
- 在桌面上预置一些第三方应用的Widget
- ubuntu zlib 安装
- DXUT.H / DXUT.CPP 解析
- poj 2446 二分图最大匹配(奇偶图)网上貌似叫(黑白染色图)