游戏开发cocos2d-x实战(10) --粒子系统(流星、烟花、火焰、下雪、下雨粒子特效)

本文主要是介绍游戏开发cocos2d-x实战(10) --粒子系统(流星、烟花、火焰、下雪、下雨粒子特效),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、粒子

粒子系统中需要包括四个部分:

  • 粒子对象
  • 运动规律
  • 随机性
  • 粒子状态。

大量的粒子叠加就可以产生我们需要的特效。 cocos2d-x引擎中,粒子系统使用CCParticleSystem来表示,又分为两大类,重力式粒子系统CCParticleSystemPoint和放射式粒子系统CCParticleSystemQuad,两者在功能上略有不同。

  • CCParticleSystemQuad支持围绕轴线旋转,
  • CCParticleSystemQuad支持更多粒子对象和缩放,重力式故名思义,系统中存在重力,重力大小可以自己定义,包括的参数有:重心,速度,方向,尺寸,存在时间,颜色,绕自己轴心旋转角度,角加速度,线加速度,半径,分组模式(是否随重心移动),放射性系统恰恰相反,不存在重力,包括的参数有:重心,方向,尺寸,存在时间,颜色,绕自己轴心旋转角度,绕重心为轴心旋转角度,半径,分组模式(是否随重心移动)。

2、cocos2d-x粒子系统使用方式:

(1)从粒子编辑器编辑生成的文件加载粒子

auto particle = ParticleSystemQuad::create("Particles/Phoenix.plist");
this->addChild(particle, 10);
particle->setDuration(3.2);
particle->setPosition(Vec2(s.width / 2, s.height / 2));
particle->setAutoRemoveOnFinish(true);

(2)使用系统预定义的粒子对像

  • CCParticleFire :火焰
  • CCParticleFireworks :烟花
  • CCParticleSun :太阳
  • CCParticleGalaxy :银河系
  • CCParticleFlower :花
  • CCParticleMeteor:流星
  • CCParticleSpiral :螺旋
  • CCParticleExplosion :爆炸
  • CCParticleSmoke:烟雾
  • CCParticleSnow :雪
  • CCParticleRain:雨
auto particle = ParticleRain::create();
this->addChild(particle, 10);
particle->setDuration(3.2);
particle->setTexture(Director::getInstance()->getTextureCache()->addImage("Particles/fire.png"));
particle->setPosition(Vec2(s.width / 2, s.height / 2));
particle->setAutoRemoveOnFinish(true);

(3)利用系统预定义的粒子对像定制粒子

auto particle = ParticleSystemQuad::createWithTotalParticles(300);
this->addChild(particle, 10);particle->setTexture(Director::getInstance()->getTextureCache()->addImage("Particles/stars.png"));// duration
particle->setDuration(3.2);  // gravity
particle->setGravity(Vec2::ZERO);// angle
particle->setAngle(90);
particle->setAngleVar(360);// speed of particles
particle->setSpeed(160);
particle->setSpeedVar(20);// radial
particle->setRadialAccel(-120);
particle->setRadialAccelVar(0);// tangential
particle->setTangentialAccel(30);
particle->setTangentialAccelVar(0);// emitter position
particle->setPosition(Vec2(160, 240));
particle->setPosVar(Vec2::ZERO);// life of particles
particle->setLife(3);
particle->setLifeVar(1);// spin of particles
particle->setStartSpin(0);
particle->setStartSpinVar(0);
particle->setEndSpin(0);
particle->setEndSpinVar(2000);// color of particles
Color4F startColor(0.5f, 0.5f, 0.5f, 1.0f);
particle->setStartColor(startColor);Color4F startColorVar(0.5f, 0.5f, 0.5f, 1.0f);
particle->setStartColorVar(startColorVar);Color4F endColor(0.1f, 0.1f, 0.1f, 0.2f);
particle->setEndColor(endColor);Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f);
particle->setEndColorVar(endColorVar);// size, in pixels
particle->setStartSize(30.0f);
particle->setStartSizeVar(00.0f);
particle->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE);// emits per second
particle->setEmissionRate(particle->getTotalParticles() / particle->getLife());// additive
particle->setBlendAdditive(false);particle->setPosition(Vec2(s.width / 2, s.height / 2));
particle->setAutoRemoveOnFinish(true);

在这里插入图片描述在这里插入图片描述

3、实战代码分享

下载源码(包含粒子系统编编辑器ParticleEditor)。

这篇关于游戏开发cocos2d-x实战(10) --粒子系统(流星、烟花、火焰、下雪、下雨粒子特效)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234937

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并