首先要声明的是,前几篇实现的shoot方法不是一定会命中目标,这取决于目标运行的速度,子弹的速度,子弹发射的时机以及弹道路径中是否有障碍物等等.

这也是符合实际情况的.如果你的要求是一旦发出子弹必定击中目标,那么代码逻辑就会完全不一样.

但这不是本章要说的事儿.本章进一步完善子弹击中目标后的爆炸效果.

首先打开SpriteBuilder,在Sprites文件夹中新增Explode.ccb文件,类型为粒子节点.按照下图设置好粒子系统属性:

其他属性皆为默认.可以按Start Particles按钮看一下效果,然后适当微调.

因为爆炸效果只会显示1次,所以不能将其直接放到MainScene.ccb中,我们需要用代码在需要的时候显示.

回到Xcode中,在player和bullet碰撞的回调方法中添加如下代码:

CCParticleSystem *explode = (CCParticleSystem*)[CCBReader load:@"Sprites/Explode"];
    explode.autoRemoveOnFinish = YES;
    explode.positionType = CCPositionTypeNormalized;
    explode.position = player.position;
    [self addChild:explode];

代码添加explode粒子,然后在其播放完毕后自动删除,同时调整其显示位置,然后添加到场景中去.

好了编译运行App,效果如下:

代码还有一些小问题,比如子弹从精灵中心发射出来时,首先会和精灵自身碰撞,这是不合常理的.通过调整物理对象的碰撞分类和掩码,可以轻松搞定这类问题,由于篇幅问题,不再详述了,在游戏NO.00001中略有提及.如果在后面的游戏中有机会再说明吧 ;)

最新文章

  1. EasyUI第一章Application之Basic CRUD(增删改查)
  2. VS.Net 2015 Update3 学习(1) 支持Webpack
  3. java web 学习 --第九天(Java三级考试)
  4. 【Unity3D游戏开发】之常用代码 (十二)
  5. sc7731 Android 5.1 LCD驱动简明笔记之一
  6. spring mvc 数据绑定总结
  7. eclipse下使用Genymotion调试Android程序出现的问题
  8. Log4j使用教程 (转载http://www.codeceo.com/article/log4j-usage.html)
  9. js的原型继承小结
  10. NDK开发,如何配置 debug环境
  11. vb.net
  12. 实验楼Python破解验证码
  13. [W3bsafe]分享一个爬SQL注入漏洞的工具
  14. Codeforces 1065F(树形dp)
  15. 最重要的7个Drupal内核模板文件
  16. (KMP 根据循环节来计算)Period -- hdu -- 1358
  17. 【转】QT事件传递与事件过滤器
  18. 从HiveQL到MapReduce job过程简析
  19. [java源码解析]对HashMap源码的分析(一)
  20. 帝都Day6——图论

热门文章

  1. jQuery 遍历 – 后代
  2. MySQL 连接的使用
  3. Cassandra User 问题汇总(1)------------repair
  4. Android简易实战教程--第三十三话《 AsyncTask异步倒计时》
  5. tomcat启动批处理——setclasspath.bat
  6. iOS中监控软键盘显示或隐藏的可靠方法
  7. C链栈实现
  8. T-SQL 中的CROSS JOIN用法(半翻译)
  9. 【ShaderToy】开篇
  10. jQuery Ajax 使用 ($.ajax、$.post、$.get)