1.图片扩散 动画
Point size = m_player->getPosition(); auto emitter = CCParticleGalaxy::create(); emitter->retain(); emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("GUIGameZhangai3.png")); emitter->setPosition(Point(size.x, size.y - 61/2)); emitter->setDuration(0.1); emitter->setAutoRemoveOnFinish(true); this->addChild(emitter, 10);
破碎效果 (不知道为啥,这个效果卡的一B) this
ActionInterval* shatteredTiles = ShatteredTiles3DDemo::create(1); NodeGrid* _gridNodeTarget; _gridNodeTarget = NodeGrid::create(); _gridNodeTarget->runAction(shatteredTiles); this->addChild(_gridNodeTarget,10); auto playerSp = Sprite::create("GUIChaoren2.png"); _gridNodeTarget->addChild(playerSp, 10); playerSp->setPosition(sp);
第一次接触粒子系统,之前游戏里面的一些小特效,像制做动画同样,是采用一帧一帧的切出来的,因为这种特效,变化无常,切出来的帧,都很是的大,也很耗内存,一下就内存溢出了......呵呵~ 主要是之前都没有接触过... 如今接触了,之后游戏就能够用到了...开心! spa
//建立一个CCParticleSystem粒子系统
CCParticleSystem* ignore = CCParticleSystemQuad::create("Particles/SmallSun.plist");
//第一种建立节点方式
CCNode *parent1 = CCNode::create();//建立一个节点
//第二种建立节点方式
CCNode *parent2 = CCParticleBatchNode::create(ignore->getTexture()); code
//第一种:建立一个CCParticleSystemQuad系统:每一个粒子用4个点(Quad,矩形)表示的粒子系统 游戏
CCParticleSystemQuad *emitter = CCParticleSystemQuad::create("Particles/SmallSun.plist"); 图片
//第二种:建立CCParticleSystemQuad系统 内存
m_emitter = new CCParticleSystemQuad(); 资源
std::string filename = "Particles/" +“粒子资源文件名字”+ ".plist";
m_emitter->initWithFile(filename.c_str()); get
下面是一些经常使用设置:
emitter1->setStartColor(ccc4f(1,0,0,1));//设置粒子RGBA值
emitter1->setBlendAdditive(false);//是否添加混合
emitter1->setPosition(ccp( s.width/2-30, s.height/2+60*neg));//设置发射粒子的位置
emitter->setAutoRemoveOnFinish(true);//完成后制动移除
//将粒子系统添加到节点(也能够直接将其添加到一个背景精灵CCSprite里面) string
parent1->addChild(emitter1, 0, 1);
//而后在添加到层里面
layer->addChild(parent1, 10, 1000+i);
CCParticleSystem中的经常使用设置参数表:
struct {
//重力和方向的向量
CCPoint gravity;
//速度
float speed;
//粒子的速度差别
float speedVar;
//粒子的切线加速度
float tangentialAccel;
//粒子间的切线加速度差别
float tangentialAccelVar;
//粒子的径向加速度
float radialAccel;
//粒子间的径向加速度差别
float radialAccelVar;
} modeA;
struct {
//粒子开始半径
float startRadius;
//粒子间开始半径差别
float startRadiusVar;
//粒子结束半径
float endRadius;
//粒子间结束半径差别
float endRadiusVar;
//粒子每秒的旋转角度
float rotatePerSecond;
//粒子间每秒的旋转角度差别
float rotatePerSecondVar;
} modeB;
cocos2dx已经为咱们提供了很是多的粒子系统效果:
CCParticleExplosion爆炸 CCParticleFire 火 CCParticleFireworks烟火 CCParticleFlower花 CCParticleGalaxy 银河 CCParticleMeteor 流行 CCParticleRain 下雨 CCParticleSmoke 下雪 CCParticleSnow 炊烟 CCParticleSpiral 螺旋 CCParticleSun 太阳焰