登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

查看: 113|回复: 6

(NO.00003)iOS游戏简单的机器人投射游戏成形记(六),ios机器人

[复制链接]

272

主题

491

帖子

2355

金钱

手工艺人

发表于 2018-1-11 14:39:57 | 显示全部楼层 |阅读模式

        

        为什么要将手臂移动的代码单独放在一个方法中?

        其实这里是多次重构之后的版本.原来的移动代码是放在touchMoved方法里的.后来发现除了触摸手臂移动方式外,还要实现触摸屏幕移动手臂这第二种方式.
所以将其提取出来放在一个方法中,后面还会在Arm类的接口中做声明.现在我们暂且不管,单单看这个方法:

[Java] 查看源文件 复制代码
-(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,我们发现当触摸手臂不放且移动时,手臂会缓缓像移动方向旋转.这里有一个加速和减速的效果,手臂从静止时移动起来较费劲,当转起来的时候因为有了动能,所以越转越快.这也是和实际物理物体的运动相符的.

        通过不停旋转手臂,发现一个小问题,是什么呢?下一篇再揭晓 ;)

        


                                               

14

主题

7052

帖子

1441

金钱

手工艺人

发表于 2018-1-11 14:42:58 | 显示全部楼层
code4app确实是个好地方,必须支持~

20

主题

7104

帖子

2287

金钱

手工艺人

发表于 2018-1-11 14:46:02 | 显示全部楼层
感谢大神~

0

主题

7049

帖子

-519

金钱

限制会员

发表于 2018-1-11 14:49:27 | 显示全部楼层
不错不错,楼主辛苦了。。。

16

主题

7099

帖子

1071

金钱

手工艺人

发表于 2018-1-11 14:52:19 | 显示全部楼层
感谢大神~

20

主题

7073

帖子

2321

金钱

手工艺人

发表于 2018-1-11 14:57:34 | 显示全部楼层
小弟学习了~支持,支持

23

主题

7078

帖子

1054

金钱

iOS大神

Rank: 6Rank: 6

分享大神

发表于 2018-1-11 15:09:07 | 显示全部楼层
感谢大神~
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表