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

cocos2d-x游戏实例(11)-触屏主角移动轨迹,第1张

概述小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 最近在玩间谍鼠这个游戏,其中有一个触屏 *** 作主角移动的方式,就是手指触摸屏幕的轨迹会被记录下来,然后主角顺着轨迹移动,其实这种 *** 作在很多游戏中都有应用,很适合触屏 *** 作。本篇文章就写一个简单的类似例子在cocos2d-x上的实现。 实现思路很简单,首

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

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

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

virtualvoIDcctouchesBegan(CCSet*ptouches,CCEvent*pEvent);

virtualvoIDcctouchesMoved(CCSet*ptouches,85); Font-family:'microsoft yahei'; Font-size:15px; line-height:35px"> virtualvoIDcctouchesEnded(CCSet*ptouches,85); Font-family:'microsoft yahei'; Font-size:15px; line-height:35px"> 另外我们需要一个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)-触屏主角移动轨迹所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1064589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存