粒子系统

粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象、物理现象及空间扭曲上具备得天独厚的优势,能为我们实现一些真实自然而又带有随机性的效果(如爆炸、烟花、水流)提供了方便。Cocos2d-x引擎中就为我们提供了强大的粒子系统。

下面是使用粒子系统完成的两个粒子特效:

 粒子系统  - 图1 粒子系统  - 图2 粒子系统  - 图3

创建粒子特效的工具

尽管你能手动创建粒子特效,按照喜好确定每个属性,但是使用工具往往更方便高效。下面介绍几个第三方工具:

  • Particle Designer:Mac 上一款非常强大的粒子特效编辑器
  • V-play particle editor:一款跨平台的粒子特效编辑器
  • Particle2dx:一款 Web 粒子特效编辑器,打开网页即可进行设计
    使用这些工具完成粒子特效的设计,最终会导出一个 .plist 文件,Cocos2d-x 通过使用这种文件,就能把粒子特效添加到场景中,添加方法和操作一个普通的节点类型一样。

创建方法:

C++

  1. // create by plist file
  2. auto particleSystem = ParticleSystem::create("SpinningPeas.plist");

内置粒子特效

准备好添加粒子特效到你的游戏中了吗?是否习惯创建自定义粒子特效?不习惯也没关系,我们内置了一些粒子特效,你可以直接使用。这个列表都是:

- ParticleFire: Point particle system. Uses Gravity mode.- ParticleFireworks: Point particle system. Uses Gravity mode.- ParticleSun: Point particle system. Uses Gravity mode.- ParticleGalaxy: Point particle system. Uses Gravity mode.- ParticleFlower: Point particle system. Uses Gravity mode.- ParticleMeteor: Point particle system. Uses Gravity mode.- ParticleSpiral: Point particle system. Uses Gravity mode.- ParticleExplosion: Point particle system. Uses Gravity mode.- ParticleSmoke: Point particle system. Uses Gravity mode.- ParticleSnow: Point particle system. Uses Gravity mode.- ParticleRain: Point particle system. Uses Gravity mode.

比如使用内置的烟火特效 ParticleFireworks

C++

  1. auto emitter = ParticleFireworks::create();
  2. addChild(emitter, 10);

是这样的效果:

 粒子系统  - 图4

要是内置的粒子特效不是你想要的那样,也没关系,你可以直接手动设置参数!让我们拿上面的烟火特效示例,并通过手动改变属性进一步控制。

C++

  1. auto emitter = ParticleFireworks::create();
  2. // set the duration
  3. emitter->setDuration(ParticleSystem::DURATION_INFINITY);
  4. // radius mode
  5. emitter->setEmitterMode(ParticleSystem::Mode::RADIUS);
  6. // radius mode: 100 pixels from center
  7. emitter->setStartRadius(100);
  8. emitter->setStartRadiusVar(0);
  9. emitter->setEndRadius(ParticleSystem::START_RADIUS_EQUAL_TO_END_RADIUS);
  10. emitter->setEndRadiusVar(0); // not used when start == end
  11. addChild(emitter, 10);

原文: http://docs.cocos.com/cocos2d-x/manual/zh/other_node_types/particles.html