Cocos2d-x3.1 粒子效果示例

前端之家收集整理的这篇文章主要介绍了Cocos2d-x3.1 粒子效果示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这里把粒子的几种效果粘出来,以便以后使用

?
@H_502_12@
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
@H_959_301@ //
// IntervalLayer.cpp
// testthirdone
//
// Created by 杜甲 on 14-7-7.
//
//
#include IntervalLayer.h
#define SID_STEP1 100
#define SID_STEP2 101
#define SID_STEP3 102
#define IDC_PAUSE 200
bool IntervalLayer::init()
{
return true ;
}
IntervalLayer::IntervalLayer()
{
_time0 = _time1 = _time2 = _time3 = _time4 = 0 .0f;
auto s = Director::getInstance()->getWinSize();
auto sun = ParticleSun::create();
sun->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
sun->setPosition(Vec2(s.width / 2 - 100 ,s.height / ));
sun->setTotalParticles( 130 );
sun->setLife( 5 .0f);
this ->addChild(sun);
// timers
auto fire = ParticleFire::create();
fire->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
fire->setPosition(Vec2(s.width / + 50 ));
fire->setTotalParticles( );
fire->setLife( .0f);
->addChild(fire);
auto fireworks = ParticleFireworks::create();
fireworks->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
fireworks->setPosition(Vec2(s.width / - 200 ));
fireworks->setTotalParticles( );
fireworks->setLife( .0f);
->addChild(fireworks);
auto galaxy = ParticleGalaxy::create();
galaxy->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
galaxy->setPosition(Vec2( ));
galaxy->setTotalParticles( );
galaxy->setLife( .0f);
->addChild(galaxy);
auto flower = ParticleFlower::create();
flower->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
flower->setPosition(Vec2( 250 ));
flower->setTotalParticles( );
flower->setLife( .0f);
->addChild(flower);
//流星
auto meteor = ParticleMeteor::create();
meteor->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
meteor->setPosition(Vec2( 20 ));
meteor->setTotalParticles( );
meteor->setLife( .0f);
->addChild(meteor);
//旋涡
auto spiral = ParticleSpiral::create();
spiral->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
spiral->setPosition(Vec2( 450 40 ));
spiral->setTotalParticles( );
spiral->setLife( .0f);
->addChild(spiral);
//爆炸
auto explosion = ParticleExplosion::create();
explosion->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
explosion->setPosition(Vec2( 440 ));
explosion->setTotalParticles( );
explosion->setLife( .0f);
->addChild(explosion);
//烟雾
auto smoke = ParticleSmoke::create();
smoke->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
smoke->setPosition(Vec2( 640 ));
smoke->setTotalParticles( );
smoke->setLife( .0f);
->addChild(smoke);
//雪
auto snow = ParticleSnow::create();
snow->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
snow->setPosition(Vec2( 840 ));
snow->setTotalParticles( );
snow->setLife( .0f);
->addChild(snow);
//雨
auto rain = ParticleRain::create();
rain->setTexture(Director::getInstance()->getTextureCache()->addImage(fire.png));
rain->setPosition(Vec2( 940 ));
rain->setTotalParticles( );
rain->setLife( .0f);
->addChild(rain);
}

效果图:

上文来自:http://www.2cto.com/kf/201407/314963.html


CCParticleSystem粒子系统

第一次接触粒子系统,以前游戏里面的一些小特效,像制作动画一样,是采用一帧一帧的切出来的,由于这种特效,变化无常,切出来的帧,都非常的大,也很耗内存,一下就内存溢出了......呵呵~ 主要是以前都没有接触过... 现在接触了,以后游戏就可以用到了...开心!

//创建一个CCParticleSystem粒子系统
CCParticleSystem* ignore = CCParticleSystemQuad::create("Particles/SmallSun.plist");
//第一种创建节点方式
CCNode *parent1 = CCNode::create();//创建一个节点
//第二种创建节点方式
CCNode *parent2 = CCParticleBatchNode::create(ignore->getTexture());

//第一种:创建一个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());

下面是一些常用设置:
emitter1->setStartColor(ccc4f(1,1));//设置粒子RGBA值
emitter1->setBlendAdditive(false);//是否添加混合
emitter1->setPosition(ccp( s.width/2-30,s.height/2+60*neg));//设置发射粒子的位置
emitter->setAutoRemoveOnFinish(true);//完成后制动移除
//将粒子系统添加到节点(也可以直接将其添加到一个背景精灵CCSprite里面)

parent1->addChild(emitter1,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 太阳焰

感谢大家阅览我的博文,希望也能看到大家留下的脚印...呵呵!
如果讲述得有误,或者不对的地方,还望各位指出!

上文来自:http://blog.csdn.net/aa4790139/article/details/8124781

cocos2dx 常见的22种特效 3D特效

//3D晃动的特效  
    CCActionInterval* shaky3D = CCShaky3D::create(5,CCSize(10,10),15,false);  
    sp->runAction(shaky3D);  

  
  
  1. //作用:创建一个3d晃动的特效
  2. // 参数1:晃动的范围
  3. // 参数2:是否有z轴晃动
  4. // 参数3:网格大小
  5. // 参数4:特效持续的时间

    3D瓷砖晃动特效  
    CCActionInterval* shakyTiles3D = CCShakyTiles3D::create(5,5,0)">    sp->runAction(shakyTiles3D);  

  
  
    // 作用:创建一个3d瓷砖晃动的特效
  1. // 参数1:晃动的范围
  2. // 参数2:是否有z轴晃动
  3. // 参数3:网格大小
  4. // 参数4:特效持续的时间
波动特效  
    CCActionInterval* waves = CCWaves::create(5,20,true,true);  
    sp->runAction(waves);  
 
  
  
    // 创建一个波动特效
  1. // 参数1:波动的速率
  2. // 参数2:振幅
  3. // 参数3:水平波动
  4. // 参数4:垂直波动
  5. // 参数5:网格大小
  6. // 参数6:特效持续时间
3D波动特效  
    CCActionInterval* waves3D = CCWaves3D::create(5,20);  
    sp->runAction(waves3D);  
     
  
  
    // 创建一个3D波动特效
  1. // 参数1:波动的速率
  2. // 参数2:振幅
  3. // 参数4:特效持续时间
3D瓷砖波动特效  
    CCActionInterval* wavesTiles3D = CCWavesTiles3D::create(5,0)">    sp->runAction(wavesTiles3D);  

  
  
    // 创建一个3D瓷砖波动特效
  1. // 参数2:振幅
  2. // 参数4:特效持续时间
X轴 3D反转特效  
    CCActionInterval* filpX = CCFlipX3D::create(5);  
    sp->runAction(filpX);  
     
  
  
    // 作用:x轴3D反转特效
  1. // 参数:特效持续的时间
Y轴3D反转特效  
    CCActionInterval* filpY = CCFlipY3D::create(5);  
    sp->runAction(filpY);  

  
  
    // CCActionInterval * flipY3D = CCFlipY3D::create(4);
  1. // sp->runAction(flipY3D);
凸透镜特效  
    CCActionInterval* lens = CCLens3D::create(2,CCPointMake(240,160),240);  
    sp->runAction(lens);  

  
  
    // 作用:凸镜特效
  1. // 参数1:凸镜中心点
  2. // 参数2:凸镜半径
  3. // 参数4:网格持续时间
 
    水波纹特效  
    CCActionInterval* ripple = CCRipple3D::create(5,240,4,160);  
    sp->runAction(ripple);  

  
  
    // 作用:水波特效
  1. // 参数1:起始位子
  2. // 参数2:半径
  3. // 参数3:速率
  4. // 参数4:振幅
  5. // 参数6:特效持续的时间
液体特效  
    CCActionInterval* liquid = CCLiquid::create(5,0)">    sp->runAction(liquid);  

  
  
    // 作用:液体特效
  1. // 参数1:速率
  2. // 参数4:特效持续时间
扭曲旋转特效  
    CCActionInterval* twirl = CCTwirl::create(50,2,2.5);  
    sp->runAction(twirl);  

  
  
    // 作用:扭曲旋转特效
  1. // 参数1:扭曲旋转中心点
  2. // 参数2:扭曲旋转的次数
  3. // 参数3:振幅
  4. // 参数4:网格大小
  5. // 参数5:特效持续时间
破碎的3D瓷砖特效  
    CCActionInterval* shatteredTiles = CCShatteredTiles3D::create(15,50,0)">    sp->runAction(shatteredTiles);  

  
  
    1. // 作用:破碎的3D瓷砖特效
    2. // 参数1:范围
    3. // 参数2:是否开启z轴
    4. // 参数3:网格大小
    5. // 参数4:特效持续的时间
瓷砖洗牌特效  
    CCActionInterval* shuffle = CCShuffleTiles::create(5,CCSize(50,50),50);  
    sp->runAction(shuffle);  

  
  
    // 作用:瓷砖的洗牌特效
  1. // 参数1:随机
  2. // 参数2:网格大小
  3. // 参数3:特效持续的时间
部落格效果,从左下角到右上角  
    CCActionInterval* fadeOutTRTiles = CCFadeOutTRTiles::create(5,50));  
    sp->runAction(fadeOutTRTiles);  
     
  
  
    // 作用:部落格效果 , 从左下角到右下角
  1. // 参数1:网格大小
  2. // 参数2:特效持续的时间

部落格效果,从右上角到左下角  
    CCActionInterval* fadeOutBLTiles  = CCFadeOutBLTiles::create(5,0)">    sp->runAction(fadeOutBLTiles);  

  
  
    // 作用:部落格效果 , 从右下角到左下角
  1. // 参数1:网格大小
  2. // 参数2:特效持续的时间
     
折叠效果 从下到上  
    CCActionInterval* fadeOutUpTiles = CCFadeOutUpTiles::create(5,10));  
    sp->runAction(fadeOutUpTiles);  

  
  
    // 作用:折叠效果 从下到上
  1. // 参数2:特效持续的时间
折叠效果,从上到下  
    CCActionInterval* fadeOutDownTiles = CCFadeOutDownTiles::create(4,CCSize(20,0)">    sp->runAction(fadeOutDownTiles);  
    
  
  
    // 作用:折叠效果 从上到下
  1. // 参数2:特效持续的时间
方块消失特效  
    CCActionInterval* turnOffFiels = CCTurnOffTiles::create(4,0)">    sp->runAction(turnOffFiels);  

  
  
    // 作用:方块消失特效
  1. 跳动的方块特效 CCActionInterval* jumpTiles = CCJumpTiles3D::create(5,20),0)"> sp->runAction(jumpTiles);
      // 作用:跳动的方格特效
    1. // 参数1:跳动的次数
    2. // 参数2:网格的大小
    3. // 参数3:特效持续的时间
分多行消失特效  
    CCActionInterval* splitCols = CCSplitCols::create(5,0)">    sp->runAction(splitCols);  

  
  
    // 作用:分多列消失特效
  1. // 参数1:列数
  2. // 参数2:特效持续的时间
分多列消失特效  
    CCActionInterval* splitRows = CCSplitRows::create(5,0)">    sp->runAction(splitRows);  
 
  
  
    // 作用:分多行消失特效
  1. // 参数1:行数
  2. // 参数2:特效持续的时间
3D翻页特效  
    CCActionInterval* pageTurn3D = CCPageTurn3D::create(4,CCSize(20,20));  
    sp->runAction(pageTurn3D); 
  
  
    // 作用:3D翻页特效
  1. // 参数1:网格大小
  2. // 参数2:特效持续的时间
//  效果组合
1.基本动作InstantAction
放置 – Place
隐藏 – Hide
显示 – Show
可见切换 – ToggleVisibility

2.延时动作
移动到 – CCMoveTo
移动– CCMoveBy
跳跃到 – CCJumpTo
跳跃 – CCJumpBy
贝塞尔 – CCBezierBy
放大到 – CCScaleTo设置放大倍数,是浮点型。
放大 – CCScaleBy
旋转到 – CCRotateTo
旋转 – CCRotateBy
闪烁 – CCBlink设定闪烁次数
色调变化到 – CCTintTo
色调变换 – CCTintBy
变暗到 – CCFadeTo
由无变亮 – CCFadeIn
由亮变无 – CCFadeOut
3.组合动作
序列 – CCSequence
同步 – Spawn
重复有线次数 – Repeate
动作反向 – Reverse
动画 – Animation
无限重复 – RepeatForever
4.速度变化
EaseIn 由慢至快。
EaSEOut 由快至慢
EaseInOut 由慢至快再由快至慢。
EaseSineIn 由慢至快。
EaseSineOut 由快至慢
EaseSineInOut 由慢至快再由快至慢。
EaseExponentialIn 由慢至极快。
EaseExponentialOut 由极快至慢。
EaseExponentialInOut 由慢至极快再由极快至慢。
Speed 人工设定速度,还可通过 SetSpeed 不断调整。

5.扩展动作
延时动作 – Delay ,比如在动作序列中增加一个时间间歇
上文来自:http://blog.csdn.net/zmzsoftware/article/details/9750373 原文链接:https://www.f2er.com/cocos2dx/342060.html

猜你在找的Cocos2d-x相关文章