登录 立即注册
金钱:

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

查看: 151|回复: 6

(NO.00002)iOS游戏精灵战争雏形(九),动感小站no.222精灵

[复制链接]

200

主题

336

帖子

880

金钱

手工艺人

发表于 2018-1-11 15:18:59 | 显示全部楼层 |阅读模式

        

        打开MainScene.m,添加shoot方法:

[Java] 查看源文件 复制代码
//子弹速度现在和目标距离相关,越近速度越慢,反之越快.应该修改为恒定速度.
-(void)shoot: (CCNode*)player target: (CGPoint)point{
    CGPoint velocity = ccpSub(point, player.position);
    velocity = ccpMult(velocity, 50);

    if (ABS(velocity.x) < 20 || ABS(velocity.y) < 20) {
        velocity = ccpMult(velocity, 5);
    }

    if (ABS(velocity.x) > 200 || ABS(velocity.y) > 200){
        velocity = ccpMult(velocity, 0.5);
    }

    CCNode *bullet = [self loadBullet];
    NSAssert(bullet, #bullet must not nil);

    bullet.position = player.position;
    CCPhysicsBody *physicsBody = bullet.physicsBody;
    [physicsBody applyAngularImpulse:10];
    [physicsBody applyImpulse:velocity];
}

        我们详细说说这个方法.首先该参数传入2个参数,分别对应发射点和目标点.计算可知子弹力矩为velocity.因为默认力矩太小,力太微弱,我们需要适当放大该力矩.具体应该放大多少应该根据实际App运行效果来定,我这里觉得50倍比较合适.

        在实际子弹发射过程中,可能会出现由于力矩的某条边角度过小或过大导致子弹速度过快或过慢得现象.我们需要根据实际角度调整力矩的值.我承认这只是权宜之计,如果时间允许这段判断代码需要进一步修改.

        然后是上膛子弹到bullet中,这里做了断言以防没有子弹,正常情况下这应该是不可能发生的.

        注意loadBullet方法已经将返回的子弹设置为可见了.接下来我们设置子弹的初始位置,取得子弹的物理对象,然后应用指定的力矩.

        而应用力矩方法上面还调用了另一个方法applyAngularImpulse,这个方法用来使发出的子弹旋转,增加视觉效果.

        


                                               

14

主题

6978

帖子

1317

金钱

手工艺人

发表于 2018-1-11 15:21:40 | 显示全部楼层
感谢大神~

23

主题

7014

帖子

1054

金钱

iOS大神

Rank: 6Rank: 6

分享大神

发表于 2018-1-11 15:27:58 | 显示全部楼层
code4app好的内容真的很多~赞

20

主题

7018

帖子

2148

金钱

手工艺人

发表于 2018-1-11 15:31:40 | 显示全部楼层
学习...学习...

0

主题

6974

帖子

-519

金钱

限制会员

发表于 2018-1-11 15:35:08 | 显示全部楼层
支持,感谢,祝code4app越来越好~

20

主题

6990

帖子

2139

金钱

手工艺人

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

16

主题

7016

帖子

876

金钱

手工艺人

发表于 2018-1-11 15:42:01 | 显示全部楼层
学习...学习...
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

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

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

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