这里把粒子的几种效果粘出来,以便以后使用
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* 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 太阳焰
感谢大家阅览我的博文,希望也能看到大家留下的脚印...呵呵!
如果讲述得有误,或者不对的地方,还望各位指出!
//3D晃动的特效 CCActionInterval* shaky3D = CCShaky3D::create(5,CCSize(10,10),15,false); sp->runAction(shaky3D);
- //作用:创建一个3d晃动的特效
- // 参数1:晃动的范围
- // 参数2:是否有z轴晃动
- // 参数3:网格大小
- // 参数4:特效持续的时间
3D瓷砖晃动特效 CCActionInterval* shakyTiles3D = CCShakyTiles3D::create(5,5,0)"> sp->runAction(shakyTiles3D);// 作用:创建一个3d瓷砖晃动的特效
- // 参数1:晃动的范围
- // 参数2:是否有z轴晃动
- // 参数3:网格大小
- // 参数4:特效持续的时间
波动特效 CCActionInterval* waves = CCWaves::create(5,20,true,true); sp->runAction(waves);// 创建一个波动特效
- // 参数1:波动的速率
- // 参数2:振幅
- // 参数3:水平波动
- // 参数4:垂直波动
- // 参数5:网格大小
- // 参数6:特效持续时间
3D波动特效 CCActionInterval* waves3D = CCWaves3D::create(5,20); sp->runAction(waves3D);// 创建一个3D波动特效
- // 参数1:波动的速率
- // 参数2:振幅
- // 参数4:特效持续时间
3D瓷砖波动特效 CCActionInterval* wavesTiles3D = CCWavesTiles3D::create(5,0)"> sp->runAction(wavesTiles3D);// 创建一个3D瓷砖波动特效
- // 参数2:振幅
- // 参数4:特效持续时间
X轴 3D反转特效 CCActionInterval* filpX = CCFlipX3D::create(5); sp->runAction(filpX);// 作用:x轴3D反转特效
- // 参数:特效持续的时间
Y轴3D反转特效 CCActionInterval* filpY = CCFlipY3D::create(5); sp->runAction(filpY);// CCActionInterval * flipY3D = CCFlipY3D::create(4);
- // sp->runAction(flipY3D);
凸透镜特效 CCActionInterval* lens = CCLens3D::create(2,CCPointMake(240,160),240); sp->runAction(lens);// 作用:凸镜特效
- // 参数1:凸镜中心点
- // 参数2:凸镜半径
- // 参数4:网格持续时间
水波纹特效 CCActionInterval* ripple = CCRipple3D::create(5,240,4,160); sp->runAction(ripple);// 作用:水波特效
- // 参数1:起始位子
- // 参数2:半径
- // 参数3:速率
- // 参数4:振幅
- // 参数6:特效持续的时间
液体特效 CCActionInterval* liquid = CCLiquid::create(5,0)"> sp->runAction(liquid);// 作用:液体特效
- // 参数1:速率
- // 参数4:特效持续时间
扭曲旋转特效 CCActionInterval* twirl = CCTwirl::create(50,2,2.5); sp->runAction(twirl);// 作用:扭曲旋转特效
- // 参数1:扭曲旋转中心点
- // 参数2:扭曲旋转的次数
- // 参数3:振幅
- // 参数4:网格大小
- // 参数5:特效持续时间
破碎的3D瓷砖特效 CCActionInterval* shatteredTiles = CCShatteredTiles3D::create(15,50,0)"> sp->runAction(shatteredTiles);
- // 作用:破碎的3D瓷砖特效
- // 参数1:范围
- // 参数2:是否开启z轴
- // 参数3:网格大小
- // 参数4:特效持续的时间
瓷砖洗牌特效 CCActionInterval* shuffle = CCShuffleTiles::create(5,CCSize(50,50),50); sp->runAction(shuffle);// 作用:瓷砖的洗牌特效
- // 参数1:随机数
- // 参数2:网格大小
- // 参数3:特效持续的时间
部落格效果,从左下角到右上角 CCActionInterval* fadeOutTRTiles = CCFadeOutTRTiles::create(5,50)); sp->runAction(fadeOutTRTiles);// 作用:部落格效果 , 从左下角到右下角
- // 参数1:网格大小
- // 参数2:特效持续的时间
部落格效果,从右上角到左下角 CCActionInterval* fadeOutBLTiles = CCFadeOutBLTiles::create(5,0)"> sp->runAction(fadeOutBLTiles);// 作用:部落格效果 , 从右下角到左下角
- // 参数1:网格大小
- // 参数2:特效持续的时间
折叠效果 从下到上 CCActionInterval* fadeOutUpTiles = CCFadeOutUpTiles::create(5,10)); sp->runAction(fadeOutUpTiles);// 作用:折叠效果 从下到上
- // 参数2:特效持续的时间
折叠效果,从上到下 CCActionInterval* fadeOutDownTiles = CCFadeOutDownTiles::create(4,CCSize(20,0)"> sp->runAction(fadeOutDownTiles);// 作用:折叠效果 从上到下
- // 参数2:特效持续的时间
方块消失特效 CCActionInterval* turnOffFiels = CCTurnOffTiles::create(4,0)"> sp->runAction(turnOffFiels);// 作用:方块消失特效
- 跳动的方块特效 CCActionInterval* jumpTiles = CCJumpTiles3D::create(5,20),0)"> sp->runAction(jumpTiles);
// 作用:跳动的方格特效
- // 参数1:跳动的次数
- // 参数2:网格的大小
- // 参数3:特效持续的时间
分多行消失特效 CCActionInterval* splitCols = CCSplitCols::create(5,0)"> sp->runAction(splitCols);// 作用:分多列消失特效
- // 参数1:列数
- // 参数2:特效持续的时间
分多列消失特效 CCActionInterval* splitRows = CCSplitRows::create(5,0)"> sp->runAction(splitRows);// 作用:分多行消失特效
- // 参数1:行数
- // 参数2:特效持续的时间
3D翻页特效 CCActionInterval* pageTurn3D = CCPageTurn3D::create(4,CCSize(20,20)); sp->runAction(pageTurn3D);// 效果组合// 作用:3D翻页特效
- // 参数1:网格大小
- // 参数2:特效持续的时间
1.基本动作InstantAction上文来自:http://blog.csdn.net/zmzsoftware/article/details/9750373 原文链接:https://www.f2er.com/cocos2dx/342060.html放置 – 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 ,比如在动作序列中增加一个时间间歇