(NO.00003)iOS游戏简单的机器人投射游戏成形记(六)
2015-11-10 14:00
330 查看
为什么要将手臂移动的代码单独放在一个方法中?
其实这里是多次重构之后的版本.原来的移动代码是放在touchMoved方法里的.后来发现除了触摸手臂移动方式外,还要实现触摸屏幕移动手臂这第二种方式.
所以将其提取出来放在一个方法中,后面还会在Arm类的接口中做声明.现在我们暂且不管,单单看这个方法:
代码比较清晰:首先取得Arm的物理对象,然后根据转动方向的不同设置对应的力矩;向上旋转则给力矩y轴一个正量,反之给y轴一个负量.我这里设置的值为+/-10,这个没什么好说的,是多次试验得出的最佳值.最后将该力矩应用在手臂上.
注意这里我没有用以往的applyForce:方法,而是用了类似的另一个方法,算是重载方法吧.该方法多了一个参数,用来设置该力矩具体作用于手臂上哪一个点.如果不这样做,默认会将力矩作用于手臂的平均点上(具体哪里本猫也不清楚;),会导致很难旋转手臂.
注意该参数为ccp(20,5),该手臂大约长20,高10,这个正好位于手臂的中线与手的焦点上.后面发射子弹也是以这个点为参考点,后面会详述.另外如果要重构的话,如果根据手臂长宽动态计算这个点可能更好点.
编译运行该App,我们发现当触摸手臂不放且移动时,手臂会缓缓像移动方向旋转.这里有一个加速和减速的效果,手臂从静止时移动起来较费劲,当转起来的时候因为有了动能,所以越转越快.这也是和实际物理物体的运动相符的.
通过不停旋转手臂,发现一个小问题,是什么呢?下一篇再揭晓 ;)
其实这里是多次重构之后的版本.原来的移动代码是放在touchMoved方法里的.后来发现除了触摸手臂移动方式外,还要实现触摸屏幕移动手臂这第二种方式.
所以将其提取出来放在一个方法中,后面还会在Arm类的接口中做声明.现在我们暂且不管,单单看这个方法:
-(void)moveArm:(MoveDirection)direction{ CCPhysicsBody *physicsBody = self.physicsBody; CGPoint velocity; switch (direction) { case armMoveDirectionUp: velocity = ccp(0, 10); break; case armMoveDirectionDown: velocity = ccp(0, -10); break; default: break; } [physicsBody applyForce:velocity atLocalPoint:ccp(20, 5)]; }
代码比较清晰:首先取得Arm的物理对象,然后根据转动方向的不同设置对应的力矩;向上旋转则给力矩y轴一个正量,反之给y轴一个负量.我这里设置的值为+/-10,这个没什么好说的,是多次试验得出的最佳值.最后将该力矩应用在手臂上.
注意这里我没有用以往的applyForce:方法,而是用了类似的另一个方法,算是重载方法吧.该方法多了一个参数,用来设置该力矩具体作用于手臂上哪一个点.如果不这样做,默认会将力矩作用于手臂的平均点上(具体哪里本猫也不清楚;),会导致很难旋转手臂.
注意该参数为ccp(20,5),该手臂大约长20,高10,这个正好位于手臂的中线与手的焦点上.后面发射子弹也是以这个点为参考点,后面会详述.另外如果要重构的话,如果根据手臂长宽动态计算这个点可能更好点.
编译运行该App,我们发现当触摸手臂不放且移动时,手臂会缓缓像移动方向旋转.这里有一个加速和减速的效果,手臂从静止时移动起来较费劲,当转起来的时候因为有了动能,所以越转越快.这也是和实际物理物体的运动相符的.
通过不停旋转手臂,发现一个小问题,是什么呢?下一篇再揭晓 ;)
相关文章推荐
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(六)
- iOS---frame和bounds的区别
- iOS开源系列——完整开源项目
- iOS常见问题总结(二)
- iOS 运行时获取类的所有属性
- iOS常见问题总结(一)
- ios 后台录音权限设置
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
- (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显示代码行数