cocos2d粒子系统--粒子编辑器Particle designer属性的介绍

本文主要是介绍cocos2d粒子系统--粒子编辑器Particle designer属性的介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cocos2d粒子系统--粒子编辑器Particle designer属性的介绍

(2013-01-21 16:32:41)
转载
标签:

杂谈

分类: cocos2d

Particle designer粒子编辑器可到这里下载(包含授权码):http://www.cocoachina.com/downloads/code/2012/0706/4424.html

-- CCParticleSystem是所有粒子系统的父类

-- CCParticleSystemPointCCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性)

-- CCParticleExplosion      (爆炸粒子效果)

-- CCParticleFireworks      (烟花粒子效果)

-- CCParticleFire              (火焰粒子效果)

-- CCParticleFlower          (花束粒子效果)

-- CCParticleGalaxy          (星系粒子效果)

-- CCParticleMeteor          (流星粒子效果)

-- CCParticleSpiral          (漩涡粒子效果)

-- CCParticleSnow            (雪粒子效果)

-- CCParticleSmoke          (烟粒子效果)

  -- CCParticleSun              (太阳粒子效果)

-- CCParticleRain            (雨粒子效果)

以上都是cocos2d自带的粒子系统,也是蛮强大的。关键玩的不是这些类,而是粒子系统的属性,N多的属性,想调出漂亮的效果还就靠这些属性了。暂且先不管那些,后面会讲到一个工具(Particle Designer,蛮方便的,省去了不少事。现在我们先理解些东西。

1、 有关CCParticleSystemPointCCParticleSystemQuad

大部分粒子系统都会继承这两个系统之一,那到底去继承哪一个呢?我们来分析下:

CCParticleSystemPoint点粒子系统,消耗内存比较少,运行速度比较快,但这只是说在12代机器上,3代以后的性能就不咋地了。

CCParticleSystemQuad方形粒子系统,在3代以后的机器上运行的比较快,他会消耗更多的内存和CPU

可谓各有利弊哈!那么我们可以在代码中根据不同的机器来选择最佳的粒子系统么?

答案是可以的。

使用预处理器ARCH_OPTIMAL_PARTICLE_SYSTEM来定义粒子系统,在代码编译过程中来判断使用哪一个粒子系统。会自动的根据机型选择合适的粒子系统

例:@interface CCParticleExplosion : ARCH_OPTIMAL_PARTICLE_SYSTEM

2、 有关粒子贴图

粒子贴图必须小于64x64的,越小越好。

    可以将贴图嵌入到Particle Designer中(缺点:修改贴图不方便),

                也可导入工程中self.texture =[[CCTextureCachesharedTextureCache] addImage:particleFile]

好了,下一步我们就来学习下粒子工具ParticleDesigner,一个可视调属性工具。下载地址:http://particledesigner.71squared.com.这个工具怎么来用就不细说了,打开此工具一目了然。在此说下在项目中怎么来用这个工具导出的文件。

1、点击工具中SAVE,保存为.plist格式文件,然后将文件导入到项目中(最基本的就不用说了)。

2、然后实例化粒子对象(这里必须用ARCH_OPTIMAL_PARTICLE_SYSTEM来初始化,如果用父类CCParticleSystem将什么都看不到

CCParticleSystem * system = [ARCH_OPTIMAL_PARTICLE_SYSTEMparticleWithFile:@"fx-explosion.plist"];

[selfaddChild:systemz:1tag:1];

3、OK接下来可以修改下在工具中不能修改的属性

                system.positionType = kCCPositionTypeFree;

                system.autoRemoveOnFinish = YES;//发射完粒子消失后从父节点移除

                system.position = ccp(100,100);//粒子发射器位置

需要注意一点的是positionType这个属性,翻看Himi的教程,里面有个讲到粒子会随精灵的位置变动而变动。这都取决于这个属性的设定。有三个值:

kCCPositionTypeRelative相对模式,粒子发射器会随精灵移动而移动,可用于制作角色身上特效等等

kCCPositionTypeGrouped 这个和上边的产生效果一样(实验得到的结果),区别在于这个是粒子随发射器移动而移动

kCCPositionTypeFree 自由模式,不会随粒子节点移动而移动(可产生火焰、蒸汽等效果)

4、最后我们再说个在测试中遇到的问题,当要显示粒子效果时,在界面上会轻微的卡下,这是粒子在加载贴图资源。这个问题不解决可能会使游戏变得不流畅了。在这里我们可以使用预加载机制,这个方法也是跟教程学的,嘿嘿!学习无处不在嘛!

首先,我们在游戏进入的场景的初始化init中加入[selfpreloadParticleEffect];

              - (void)preloadParticleEffect

              {

                      [ARCH_OPTIMAL_PARTICLE_SYSTEMparticleWithFile:@"fx-explosion.plist"];

              }

              因为particleWithFile方法是以自动释放的方式初始化的粒子,因此不用关心他们的内存释放问题。

              当他们释放掉以后他们的贴图会保留再缓存(CCTextureCache)中,因此解决了粒子显示时及时加载贴图的问题。

              如果"fx-explosion.plist"里面没有嵌贴图,那就用[[CCTextureCachesharedTextureCache]addImage:@"fire.png"];这个方式先把贴图加入缓存啦。

工具的属性介绍:

基本的设置

Max Particles 粒子的数量

Lifespan 生命周期, 周期越长屏幕上同事存在的粒子数量就越多

LifespanVariance 生命周期的变量值,例如生命周期为5,变量为1,那么生命周期就会在5-15+1之间随机一个数

Start Size 开始的粒子大小

Start SizeVariance 开始粒子大小的变量值

Finish Size 结束的粒子大小

Finish SizeVariance 结束粒子大小的变量值

Particle EmitAngle 粒子发射的角度

Particle EmitAngle Variance 粒子发射角度变量值

Position Y 发射的Y坐标

Position X 发射的X坐标

Duration 持续时间,当为 -1时候是持久的

发射模式设置

Gracity 重力模式

Speed 粒子速度

Speed Variance 速度变量值

Gracity x 粒子重力下X轴上的加速度

Gravity y 粒子重力下Y轴上的加速度

Radial Acceleration 当是正数时,离发射器越远,加速就越大;否则相反

Radial Acceleration Variance 以上的浮动值

Tangential Acceleration 让粒子旋转围着发射器运动,越远加速越快。当为正时,逆时针旋转;否则相反

    Radial 半径模式(让粒子沿着一个圆形旋转,可产生漩涡、螺旋效果)

Max Radius 最大半径

Max Radius Variance 以上浮动值

Min Radius 最小半径

Deg.Per.Second影响粒子移动的方向和速度

Deg.Per.Second Var 以上浮动值

颜色模式(ccColor4F

Red 

Blue

Green 绿

Alpha 透明度

粒子混合模式Blend Function

来源Source和目标Destination这个两个值都为以下几种情况:

      GL_ZERO

      GL_ONE

      GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

比如:

来源混合模式GL_SRC_ALPHA和目标混合模式GL_ONE_MINUS_SRC_ALPHA的话,得到的将会是透明的粒子。

来源混合模式GL_SRC_ALPHA和目标混合模式GL_ONE经常配合使用来生成递增型的混合效


这篇关于cocos2d粒子系统--粒子编辑器Particle designer属性的介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现