(NO.00003)iOS游戏简单的机器人投射游戏成形记(六)
2023-09-14 08:56:50 时间
其实这里是多次重构之后的版本.原来的移动代码是放在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.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二十)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十八)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十七)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十六)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十三)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(九)
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
- (NO.00002)iOS游戏精灵战争雏形(三)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十六)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十一)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十七)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十四)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十二)
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- Ios开发之 -- js和ios的交互
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
- h5 ios手机 隐藏input输入光标
- 【IOS-COCOS2D游戏开发之三】CCSCENE切换的所有特效(28种)以及设置屏幕横竖屏!
- 【IOS-COCOS2D游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/图片缩放后模糊透明/图片不清晰【2013年12月13日补充】/动画播放出现毛边以及禁止游戏中自动锁屏问题!
- 【IOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GAMECENTER 指南(实现仿官方的成就提示框)、游戏接入OPENFEINT指南;
- 【 IOS语言本地化(多语言环境)】让你的游戏与软件国际全球化,自动识别各地区用户!
- iOS中 蓝牙2.0详解/ios蓝牙设备详解
- iOS中 通知中心Text (实例)
- 在苹果iOS平台中获取当前程序进程的进程名等信息
- IOS毛玻璃效果
- iOS面试经验分享
- 【iOS开发-35】有了ARC内存管理机制,是否还须要操心内存溢出等问题?——面试必备