回到Xcode中,在MainScene.h接口中添加碰撞协议:

@interface MainScene : CCNode <CCPhysicsCollisionDelegate>
//...
@end

然后在MainScene.m初始化方法中打开碰撞代理:

_physicWorld = (CCPhysicsNode*)[self getChildByName:@"physicWorld" recursively:YES];NSAssert(_physicWorld, @"physicWorld must not nil");_physicWorld.collisionDelegate = self;

因为我们要处理的是子弹和传感器的碰撞,所以需要添加对应的碰撞回调方法:

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair bullet:(CCNode *)bullet sensor:(CCNode *)sensor{CCPhysicsBody *phyBullet = bullet.physicsBody;phyBullet.collisionType = @"null";[self scheduleBlock:^(CCTimer *timer){bullet.visible = NO;bullet.position= ccp(0, 0);} delay:5];_score++;_scoreLabel.string = [NSString stringWithFormat:@"Score:%d",_score];    return NO;
}

首先取得子弹的物理对象,然后将碰撞类型改为@”null”;这是因为可能发生以下这种情况:

子弹先进入篮框接触到感应器,但是可能会碰到篮框内壁从而向上反弹离开传感器,接着就下落碰到传感器,造成一颗子弹进入篮框多次计分.

将其碰撞模型设为@”null”之后,该已经碰到传感器的子弹,不再会与传感器发生碰撞了.当然这只是一种解决办法.

接下来我们等到5秒之后,将该子弹设为不可见,并将其从篮框中移出,一来不影响其它射入的子弹,二来可以重用该子弹.

最后计分,并且更新Hud层中的分数标签.

编译运行游戏,最后效果如下:

其中略去了制作Hud层的步骤,经过前几篇的锻炼这个应该不再话下了.

这个游戏到这里就暂时告一段落了,接下来的游戏NO.00004将开发一个类似于弹球打砖块的游戏,到时候见 ;)

(NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)相关推荐

  1. (NO.00003)iOS游戏简单的机器人投射游戏成形记(一)

    这是一个简单的机器人投射游戏,主要来熟悉物理引擎的一些东西.你可以把它认为是机器人投篮;尽管投出的是抛物线,但不是篮球而是子弹,速度也较快. 游戏玩法是玩家选择机器人,移动机器人手臂瞄准篮框,然后发射 ...

  2. (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)

    打开Ai按需求依次绘制机器人身体,手臂和篮框: 因为是实验性质的游戏所以没必要在这上面花太多功夫,画出意思即可.虽然是2D游戏,但实际游戏中可以表现出伪3D的图形效果;尽管本猫这次画的游戏元素都是满满 ...

  3. (NO.00003)iOS游戏简单的机器人投射游戏成形记(七)

    因为到目前为止我都是在iOS模拟器中测试,但即便如此,也觉得按住手臂旋转时,手臂转动起来比较费劲,很难停止在玩家期望的位置上.因为手臂完全通过物理引擎的计算来移动,它有自身的惯性影响,所以很难控制. ...

  4. (NO.00003)iOS游戏简单的机器人投射游戏成形记(十二)

    回到Xcode,新建Level1类,继承于CCNode. 打开Level1.m在初始化方法中添加如下方法: -(void)didLoadFromCCB{[self initBasket];[self ...

  5. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)

    自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...

  6. python猜数字游戏简单-python猜数字游戏快速求解解决方案

    python猜数字游戏快速求解解决方案.使用方法: 1. 保存代码为guessall.py 2. 执行python guessall.py > result.txt 3. 打开result.tx ...

  7. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)

    下面修改最为关键的matchRun方法里的代码: CCActionCallBlock *blk = [CCActionCallBlock actionWithBlock:^{_finishedCoun ...

  8. 【Visual C++】游戏开发五十四 浅墨DirectX教程二十一 视觉的诡计 公告板 Billboard 技术

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  9. 【Visual C++】游戏开发五十四 浅墨DirectX教程二十一 视觉的诡计:公告板(Billboard)技术...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)   微博:@浅墨_毛星云邮箱: happylifemxy@163.com I'm back~,这段时间大家久等了~ ...

最新文章

  1. 快速排查feign.FeignException: status 500 …
  2. Android性能优化
  3. 电脑画画软件_手机原来可以画出这么美的插画!|手机画画软件app篇
  4. python文件处理:每隔一定数目删除;文件重命名;删除多余xml文件;将文件夹线所有文件平均分配到其他文件夹
  5. 口袋中的xmind如何添加优先等级图标
  6. 上海找python工作容易吗_Python程序员去上海工作有多难?
  7. 靶场练习第二十五天~vulnhub靶场之Raven-2
  8. Datawhale-零基础入门NLP-新闻文本分类Task05
  9. springboot中接口实例化_AngularJs中控制器的定义,实例化,作用域范围
  10. 遇见未来 | 软件定义数据中心:人类文明运行在软件之上
  11. 吴恩达机器学习 8.应用机器学习的建议
  12. 怎么比较字符串java_如何在Java中比较字符串?
  13. ssh java_java中的SSH的各自作用是什么-百度经验
  14. (day 26 - 广度优先搜索 )剑指 Offer 32 - III. 从上到下打印二叉树 III
  15. c语言多xml文件操作,c语言 C#中对XML文件的操作.doc
  16. 《第一行代码Android(第3版)》— Android 书籍
  17. Facebook 数字货币:缘起、意义和后果
  18. 寒山是一位高僧,拾得是一位和尚。
  19. 项目管理的5大过程/ 9大知识领域/44个子过程
  20. 悟透JavaScript(李站老师)-对象素描

热门文章

  1. 一键 caddy php h5ai_H5ai 在线播放搭建
  2. java zoneid_java – ZoneId和LocalDateTime
  3. python能爬取什么_5行代码就能写个爬虫,python真是太方便了!
  4. java多线程代码_java多线程实例代码详解
  5. 此计算机中未配置默认浏览器,飞火浏览器设置默认浏览器失败了怎么办-飞火浏览器设置默认浏览器的方法 - 河东软件园...
  6. python导入requests库_windows环境中python导入requests
  7. python直方图显示图例_python-Matplotlib,图例未出现在直方图中
  8. Mysql Linux安装详细步骤
  9. python主程序子程序_python子程序
  10. date timestamp mysql_MySQL中DATETIME、DATE和TIMESTAMP类型的区别