(NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
2015-11-10 13:02
483 查看
上一篇我们建立了机器人物理对象,下面我们来看看对应的逻辑代码.
进入Xcode,新建Robot和Arm类,分别继承于CCNode和CCSprite类.代码全部留空,后面再实现.
我们再看一下这个机器人要如何与玩家交互.当玩家触碰到机器人手臂并且移动时,以关节为中心旋转手臂.因为前面在SpriteBuilder中限制了关节转动的范围,所以不用担心关节旋转到”奇怪”的角度上.
首先在Arm.m的初始化方法中打开用户交互:
在Arm类中新建实例变量_touchPoint:
添加触摸回调方法,首先是touchBegan:
这里保持第一次触摸时的位置用来和之后移动时的坐标相比较,从而判断选择的方向.
然后是touchMoved方法:
我们简单看看这个方法:取得触摸移动位置,用它和之前保存的位置相比较,只要判断y轴的值即可:如果大于之前的y值则表示向上旋转,否则表示向下旋转.最后根据旋转方向旋转手臂.这里旋转方向是一个枚举值,因为可能在其他类中也会使用,比如后面我们会看到触摸手臂旋转的一个大问题,需要改为触摸屏幕选择手臂.我们这里将其放在一个通用头文件里,新建一个Comm.h头文件,内容如下:
然后在所有需要使用该枚举定义的类中包含该头文件即可.
在下一篇里,我们将会看到上面代码中还未介绍的moveArm方法是如何实现的 ;)
进入Xcode,新建Robot和Arm类,分别继承于CCNode和CCSprite类.代码全部留空,后面再实现.
我们再看一下这个机器人要如何与玩家交互.当玩家触碰到机器人手臂并且移动时,以关节为中心旋转手臂.因为前面在SpriteBuilder中限制了关节转动的范围,所以不用担心关节旋转到”奇怪”的角度上.
首先在Arm.m的初始化方法中打开用户交互:
self.userInteractionEnabled = YES;
在Arm类中新建实例变量_touchPoint:
@implementation Arm{ CGPoint _touchPoint; }
添加触摸回调方法,首先是touchBegan:
-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{ CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch]; _touchPoint = location; }
这里保持第一次触摸时的位置用来和之后移动时的坐标相比较,从而判断选择的方向.
然后是touchMoved方法:
-(void)touchMoved:(CCTouch *)touch withEvent:(CCTouchEvent *)event{ CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch]; MoveDirection direction = armMoveDirectionDown; if (location.y > _touchPoint.y) { direction = armMoveDirectionUp; }else if(location.y < _touchPoint.y){ direction = armMoveDirectionDown; } [self moveArm:direction]; }
我们简单看看这个方法:取得触摸移动位置,用它和之前保存的位置相比较,只要判断y轴的值即可:如果大于之前的y值则表示向上旋转,否则表示向下旋转.最后根据旋转方向旋转手臂.这里旋转方向是一个枚举值,因为可能在其他类中也会使用,比如后面我们会看到触摸手臂旋转的一个大问题,需要改为触摸屏幕选择手臂.我们这里将其放在一个通用头文件里,新建一个Comm.h头文件,内容如下:
#ifndef ShootBall_Comm_h #define ShootBall_Comm_h typedef enum { armMoveDirectionUp, armMoveDirectionDown }MoveDirection; #endif
然后在所有需要使用该枚举定义的类中包含该头文件即可.
在下一篇里,我们将会看到上面代码中还未介绍的moveArm方法是如何实现的 ;)
相关文章推荐
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
- iOS开发插件
- iOS ---cell设置头像
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(四)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(四)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(四)
- iOS开发的一些小技巧
- 小技巧5-iOS 统计Xcode整个工程的代码行数
- 【iOS】用CocoaPods做iOS程序的依赖管理
- iOS沙盒(sandbox)机制
- 小技巧4-iOS Xcode显示代码行数
- Xcode 7.1 中安装 Alcatraz 失败最全的解决方案
- iOS开发日记46-倒计时效果的实现
- 使用Xcode和Instruments调试解决iOS内存泄露
- <iOS>typeof(self)的作用
- iOS开发-日期操作
- iOS 中二维码扫描(zxingObjc和原生)
- iOS9的新特性以及适配方案-----转载
- iOS高级之团队协作开发(svn)
- 苹果开发 笔记(91)cocopods 插件升级问题记录