首先要声明的是,前几篇实现的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中略有提及.如果在后面的游戏中有机会再说明吧 ;)

(NO.00002)iOS游戏精灵战争雏形(十二)的更多相关文章

  1. (NO.00002)iOS游戏精灵战争雏形(十)

    到目前为止,子弹是有去无回.如果子弹击中目标或者飞出屏幕,那么子弹也就没必要存在了. 这里的不存在不是把它从屏幕中删除,因为前面提到了子弹缓存的作用,所以这里仅仅将其设置为不可见就可以了. 首先处理飞 ...

  2. (NO.00002)iOS游戏精灵战争雏形(一)

    原本想做一个复杂点的平面动作游戏,可以觉得还是有点把握不了.还是先从简单的原型开始吧. 构思中的精灵战争(SpriteWar)是一个类似FC时代的小游戏,可以造兵,可以捕获敌兵.原本还想加上保卫老巢的 ...

  3. (NO.00002)iOS游戏精灵战争雏形(二)

    在SpriteBuilder中新建Images文件夹,将所需要的图片素材全部拖入其中: 别忘了将其转换为智能精灵图表文件夹. 因为我们不需要为ipad和安卓设计,所以在项目设置里将所有出iphone以 ...

  4. (NO.00002)iOS游戏精灵战争雏形(十一)

    为了在子弹触碰到目标时做一些事情,我们必须要设置碰撞回调. 首先在MainScene.h的类接口中添加碰撞协议: @interface MainScene : CCNode <CCPhysics ...

  5. (NO.00002)iOS游戏精灵战争雏形(八)

    子弹的初始化工作前2篇基本做好了,下面就是如何射出子弹. 通常来说,子弹射向目标对象,需要走一条直线.直线由2点定位,分别为发射点和目标点. 发射点就是开枪精灵自身的位置,目标点则为敌方精灵的位置,大 ...

  6. (NO.00002)iOS游戏精灵战争雏形(六)

    接下来我们给MainScene场景再添加一个精灵,作为敌人. 双击SpriteBuilder中的MainScene.ccb,从控件库拖入一个CCSprite到CCPhysicsNode中,设置精灵帧为 ...

  7. (NO.00002)iOS游戏精灵战争雏形(五)

    完成了精灵自己移动之后,我们开始着手实现按住精灵拖动的功能. 要想处理触摸事件,我们需要做2件事: 1.在类的初始化中打开触摸接收属性 2.实现触摸处理回调方法 我们依次来做这2件事. 首先要搞清楚在 ...

  8. (NO.00002)iOS游戏精灵战争雏形(四)

    在Xcode打开MainScene,添加初始化代码如下: -(void)didLoadFromCCB{ NSAssert(_sprite1, @"_sprite1 must not nil& ...

  9. (NO.00002)iOS游戏精灵战争雏形(三)

    在Sprite中新建Sprites文件夹,在其中添加Player.cc文件,确保其类型为Sprite. 将其Root节点的CCSprite的精灵帧设置为Image/sprite-2.png,然后打开物 ...

随机推荐

  1. ubuntu14.04拼音输入法问题的解决方法

    14.04的自带的拼音输入法,打字的时候你会发现有很大的问题,打不出来一个完整的字. 解决方法: ibus-daemon -drx   //重启ibus进程 在终端里输一次这个命令就ok了. 或者装个 ...

  2. C stat函数的用法举例(转载)

    stat函数讲解表头文件:    #include <sys/stat.h>             #include <unistd.h>定义函数:    int stat( ...

  3. How To Automate Disconnection of Idle Sessions

    ***Checked for relevance on 30-Apr-2012*** goal: How to automate disconnection of idle sessions fact ...

  4. springMVC源码解析--ViewResolverComposite视图解析器集合(二)

    上一篇博客springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了一些springMVC提供的很多视图解析器ViewResolver,在开发的一套springMVC系统中是可 ...

  5. 《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)

    <读书报告 – Elasticsearch入门 > 第一章 Elasticsearch入门 Elasticsearch是一个实时的分布式搜索和分析引擎,使得人们可以在一定规模上和一定速度上 ...

  6. python转lua最容易掉进去的坑--作用域

    你以为会依次打印2,4,8吗? 错. 2,2,2 value = 1 for i=1,3 do local value = value*2 print(value) end 你以为打印1吗?,错,输出 ...

  7. rbac 概念

    1 权限管理 1.1 什么是权限管理 分享牛原创,分享牛系列.基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户 ...

  8. shell编程--基本格式,基本语法,运算符,expr,(()),$[]

    02/shell编程 Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell Shell也是一门编程语言."."号执行脚本时,会让脚本在调用者 ...

  9. Android TV开发总结(四)通过RecycleView构建一个TV app列表页(仿腾讯视频TV版)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52854131 前言:昨晚看锤子手 ...

  10. Android Studio 2.2 新功能详解

    Tamic /文 -译 http://blog.csdn.net/sk719887916/article/details/52672688 Android的Studio 2.2 已经可以在官网下载了. ...