小满(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);

这个实现起来比上一篇的问题要简单,但是我们要实现一个小算法,就是,我们检测我们的触电在主角的矩形范围内的一个点,那我们的触点不一定在主角的锚点上,这样我们不能直接用触点直接设置主角的位置,我们需要处理一下,见下图

如图p点是我们的触点,a点是我们的锚点,我们只要满足一下公式:

Px - Ax = dx,Py - Ay = dy就可以了。

首先来看ccTouchesBegan的实现:

首先还是获得触点,然后我们就要获得主角位置,和上次的程序一样,主角还是绑定在地图上的,所以我们要获得主角的绝对坐标,然后判断触点是否在主角这个矩形范围内,如果在范围内,我们把索引值设置为-5,-5表示起始点有效,-1表示起始点无效,然后我们就通过刚才那个公式获得dx和dy(也就是xdelta,ydelta)。

再来看ccTouchesMoved的实现:

如果索引值为-5,那表示我们就可以控制主角了,然后我们要判断触点是否在屏幕范围内,如果在屏幕范围内,再判断这个位置是否和主角当前位置相同,如果不同才会设置主角位置,这里要说到的是我们获得上一个位置的方法,当然,你也可以通过一个变量来控制,这里介绍通过计算得到的方法,首先通过主角的getposition方法获得的坐标只是主角相对于地图的坐标,我们加上地图的横纵坐标来获得主角的绝对坐标,然后再通过Px - Ax = dx,Py - Ay = dy公式获得上一个触点的位置,最后设置主角位置,注意首先还是通过Px - Ax = dx,Py - Ay = dy公式获得锚点应该移动到的位置,然后再减去地图的位置获得主角和地图的相对坐标

再来看ccTouchesEnded的实现:

很简单,就是如果索引值为-5时重新设置为-1的“未激活”状态。

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

下一篇继续游戏实例

cocos2d-x游戏实例(12)-实时拖动主角移动相关推荐

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

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

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

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 最近在玩间谍鼠这个游戏,其中有一个触屏操作主角 ...

  3. cocos2d-x游戏实例(13)-简易摇杆控制主角

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上两篇文章都介绍的触屏地操作,其实进入智能机时 ...

  4. cocos2d-x游戏实例(1)-视角跟随主角

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 本系列的文章在上一个cocos2d-x入门的基 ...

  5. 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)

    初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比 发布于:2013-07-18 11:00阅读数:1984 ...

  6. iOS cocos2d 2游戏开发实战(第3版)---你的第一个游戏!

    2019独角兽企业重金招聘Python工程师标准>>> 随着苹果公司不断地创新与发展,新的iPhone 5.iPad 4以及iPad mini产品相继问世,包括iOS与Xcode在内 ...

  7. cocos2d-x游戏实例(14)-纵版射击游戏(1)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 从本篇开始,实现一个简单的纵版射击游戏,本篇先 ...

  8. api游戏编程鼠标选择拖动_如何选择合适的游戏鼠标

    api游戏编程鼠标选择拖动 You don't need a gaming mouse to play PC games-just about any mouse with two buttons a ...

  9. Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CompoundBigWatermel ...

最新文章

  1. 剑指offer:面试题26. 树的子结构
  2. java基础---动态代理机制
  3. go errgroup 递归搜索目录中的Go文件
  4. 【Python】Flask框架系列(二):安装、配置文件、增删改查
  5. html-其他常见标签的使用
  6. tcp的发送端一个小包就能打破对端的delay_ack么?
  7. jQuery——入门(二)动画
  8. mysql8.0windows,Windows下mysql 8.0.12 安装详细教程
  9. java 字符串 常量_Java进阶——Java中的字符串常量池
  10. Java中SQL语句传向数据库
  11. Anaconda和conda——关于python的数据科学开发环境,数据科学必备的十大Python库
  12. linux抓取vlan数据包,如何抓取 带VLAN tag的包
  13. github-production-release Git-2.28.0-64-bit
  14. 【QT】将指定ip添加到凭据管理器
  15. 2.5 Moblin项目提供的开发工具
  16. docker add new port
  17. 百度人脸活体检测系统通过信通院“护脸计划”首批优秀级安全防护能力评估
  18. ARP局域网断网攻击原理分析及演示
  19. opencv findContours()轮廓特征分析大全(求面积、周长、几何矩、质心、凸包、最小外接矩形、最小外接三角形、最小外接椭圆等)
  20. ctf——如来十三掌

热门文章

  1. 字符串-长度、计数、位置方法演练
  2. RaDirect交换器-搭建环境
  3. Oracle数据库管理
  4. TimingWheel 时间轮详解
  5. python中如何删除字典中的元素_python中字典删除元素
  6. win7安装oracle9i 补丁_最详细图解Windows7x64更新安装教程
  7. if-else运用及技巧(C# 参考)
  8. Delphi的System.Str - 将数字格式化为字符串
  9. GraphQL入门2
  10. qml demo分析(threadedanimation-线程动画)