粒子系统

用于在游戏的场景中生成特效,减少美工工作,可生成类似火焰,星星等的特效,效率高。为了方便开发,我们还可以利用粒子系统编辑器生成相应的plist,这里我上传了一个编辑器,当然也可从网上下载,下载地址:http://download.csdn.net/detail/u013707014/8997159

粒子系统相关类:(另外可设置其属性,查看详细官方文档)

ParticleFire 火焰粒子系统
ParticleFireworks 烟花粒子系统
ParticleSun 太阳粒子系统
Particlegalaxy 星系粒子系统
ParticleFlower 开花粒子系统
ParticleMeteor 流星粒子系统
ParticleSpiral 螺旋粒子系统
ParticleExplosion 爆炸粒子系统
ParticleSmoke 烟雾粒子系统
ParticleSNow 雪花粒子系统
ParticleRain 下雨粒子系统
tParticle 粒子数据结构
ParticleSystem 粒子系统基类 粒子系统属性
ParticleSystemQuad 每次生成4个粒子

实例:

auto emitter = ParticleFireworks::create();
// 设置持续时间(永久)
emitter->setDuration(ParticleSystem::DURATION_INFINITY);
// 设置发射器模式(发散)
emitter->setEmitterMode(ParticleSystem::Mode::RADIUS);
// radius mode: 100 pixels from center
emitter->setStarTradius(100);
emitter->setStarTradiusVar(0);
emitter->setEndRadius(ParticleSystem::START_RADIUS_EQUAL_TO_END_RADIUS);
emitter->setEndRadiusVar(0); // not used when start == end
addChild(emitter,10);

Texture2D* fire = Director::getInstance()->getTextureCache()->addImage("image/fire.png");
CCParticleSystemQuad* emitter = CCParticleFire::create();
emitter->setTexture(fire);
// set the duration
emitter->setPosition(s.width / 2,s.height / 2);
this->addChild(emitter);

auto fire = ParticleSystemQuad::create("myfire.plist");
fire->setPosition(s.width / 2,s.height / 2);
this->addChild(fire);

场景切换

场景的转换是由Director类来控制的,通过调用Director类的replaceScene( Scenescene ) 方法可直接使用传入的scene替换当前场景来切换画面,当前场景会被释放,它是切换场景时最常用的方法。

Scene *hello = SwiftScene::createScene();
CCDirector::getInstance()->replaceScene(hello);


场景切换特效:

TransitionRotoZoom旋转和缩放外出的场景,同时旋转缩放进入的场景
TransitionJumpZoom 缩小跳着切出场景,同时跳着放大传人场景
TransitionMoveInL 从左侧传人场景.
TransitionMoveInR 从右侧传人场景.
TransitionMoveInT 从顶部传人场景.
TransitionMoveInB 从底部传人场景.
TransitionSlideInL 从左边滑入传人场景.
TransitionSlideInR 从右边滑入传入场景.
TransitionSlideInB 从底部滑入传入场景.
TransitionSlideInT 从顶部滑入传入场景.
TransitionShrinkGrow 当增长传入scene的时候,收缩传出的scene
TransitionFlipX 水平翻转屏幕。 正面是传出的场景,背面是传入的场景
TransitionFlipY 垂直翻转屏幕。
TransitionFlipAngular 水平垂直翻转一半屏幕.
TransitionZoomFlipX 水平翻转屏幕,做一个 传入/穿出 缩放 正面是传出的场景,背面是传入的场景。
TransitionZoomFlipY 垂直翻转屏幕,做一个 传入/穿出 缩放 正面是传出的场景,背面是传入的场景。
TransitionZoomFlipAngular 一半水平一半垂直 传入/穿出 翻转并一点点的缩放屏幕 正面是传出的场景,背面是传入的场景。
TransitionFade 淡出传出 scene ,淡入传入 scene.
TransitionCrossFade 两个 scenes 使用 RenderTexture 对象交叉淡入淡出
TransitionTurnOffTiles 随机顺序关闭淡出场景的 tiles.
TransitionSplitCols 奇数列向上推移而偶数列向下推移.
TransitionSplitRows 奇数行行从左侧推移,偶数行从右侧推移.
TransitionFadeTR 从从左下角到右上角淡出 scene 的所有 tiles.
TransitionFadeBL 从右上角到左下角淡出 scene 的所有 tiles.
TransitionFadeUp 从下向上淡出 scene 的所有 tiles.
TransitionFadeDown 从上向下淡出 scene 的所有 tiles.
TransitionPageTurn 一个过渡效果这个剥落卷页场景的右下角过渡 过渡到场景下方模拟翻页。
TransitionRadialccw/TransitionRadialCW 扇面展开收起

实例:

Scene *hello = CCTransitionPageTurn::create(1.0f,SwiftScene::createScene(),true);
CCDirector::getInstance()->replaceScene(hello);

网格特效

实例:

<pre name="code" class="cpp">nodegrid = NodeGrid::create();
	auto lens = Shaky3D::create(5,Size(10,10),4,true);
	//参数依次为:持续时间、网格大小、中心坐标、半径
	this->addChild(nodegrid);
	nodegrid->runAction(lens);
	auto sprite = Sprite::create("HelloWorld.png");
	nodegrid->addChild(sprite);
	sprite->setPosition(s.width / 2,s.height / 2);


	// 时间调度,使其不断检查网格是否结束
	schedule(CC_SCHEDULE_SELECTOR(HelloWorld::CheckAction));

void HelloWorld::CheckAction(float dt)
{
	// 获取正在执行的动作和执行的网格动作
	if (nodegrid->getNumberOfRunningActions() == 0 && nodegrid->getGrid() != NULL)
	{
		nodegrid->setGrid(NULL);
	}
}

Cocos2d-x学习笔记八—— 粒子系统,场景切换,网格特效的更多相关文章

  1. swift – SceneKit:应用程序在SCNView上渲染SpriteKit粒子系统时崩溃,当所有代码似乎都是系统代码的一部分时如何调试

    在SCNView的overlaySKScene属性中运行SpriteKit粒子系统会导致应用程序崩溃,并显示下面的堆栈跟踪.基于堆栈跟踪,似乎所有系统代码都在运行,所以你应该如何调试崩溃,更重要的是,确定它是否是SceneKit/SpriteKit的错误或应用程序中的错误?

  2. THREE.JS入门教程(4)创建粒子系统

    Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D本文将介绍创建一个粒子系统/风格/引入物理等等,感兴趣的朋友可以了解下哦,希望本文对你有所帮助

  3. IOS 粒子系统 (CAEmitterLayer)实例详解

    这篇文章主要介绍了IOS 粒子系统 (CAEmitterLayer)实例详解的相关资料,需要的朋友可以参考下

  4. 我应该使用什么方法进行C#脚本编写

    回答这个问题时要考虑的另一个非常重要的事情:请注意,这将是游戏的粒子系统.编译的代码每帧调用超过3000次.因此,编译代码执行的时间比其他游戏函数要长得多,这一点非常重要.将修饰符脚本编译到表单的委托中会很好:委托voidModifyParticle;这可能吗?解决方法是,使用CSScriptlibrary可以实现这一点非常简单.

  5. cocos2dx -- 150505 学习笔记

    CCParticleSystem:粒子系统类,不过只是一个基类,并不完善。CCParticleSystemQuad:粒子系统矩形类,实现CCParticleSystem的虚函数,postStep、updateQuadWithParticle、setTotalParticles和draw函数。postStep完成不使用BatchNode时的VBO的更新,该类可以在不使用BatchNode的情况下,自己完成粒子的渲染。产生出特定的粒子系统:通过从CCParticleSystemQuad派生子类,并重写初始化函

  6. Cocos2d-JS内置粒子系统

    从类图中我们可以看到,Cocos2d-JS中有内置的11种粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置。其中this.pLabel.setString函数是为场景中标签设置内容,这样在进入场景后可以看到粒子系统的名称。

  7. 错误日志--2 cocos2dx,粒子系统,plist

    最近几天想试试在小游戏里面加入粒子系统,但是,内置的粒子系统满足不了需求。检查plist,原来是MaxParticle为0。这个编辑器不知道为什么最大粒子数不会写入,可能是让用户手动设置最大数,好蛋疼。将plist文件读取进来只需要一句话就够了,plist文件,使用XML保存,按照键值对的形式记录粒子系统的每项数据,比想象中的简单。

  8. cocos2d粒子系统--粒子编辑器Parti…

    CCParticleSystemQuad方形粒子系统,在3代以后的机器上运行的比较快,他会消耗更多的内存和cpu。使用预处理器ARCH_OPTIMAL_PARTICLE_SYstem来定义粒子系统,在代码编译过程中来判断使用哪一个粒子系统。会自动的根据机型选择合适的粒子系统例:@interfaceCCParticleExplosion:ARCH_OPTIMAL_PARTICLE_SYstem2、有关粒子贴图粒子贴图必须小于64x64的,越小越好。好了,下一步我们就来学习下粒子工具ParticleDesig

  9. Cocos2d-JS自定义粒子系统

    使用ParticleSystem自定义粒子系统至少有两种方式可以实现:代码创建和plist文件创建。雪花图片雪花粒子纹理图片提示描述粒子属性的plist文件,可以通过粒子系统设计工具生成,有关粒子系统工具使用大家可以参考本系列丛书的工具卷。

  10. 我的Cocos2d-x学习笔记二十一内置粒子系统、使用粒子特效文件

    当我们希望在游戏中模拟这些大规模运动的物体时,通常有如下两种方法。Cocos2d-x中粒子系统由CCParticleSystem类实现,CCParticleSystem实现了对粒子的控制与调度。对粒子的操作包括:产生粒子:也称作粒子发射器。

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部