cocos2d-x基本知识点:粒子系统
来源:互联网 发布:育知同创主要培训什么 编辑:程序博客网 时间:2024/05/29 16:23
在Coscos2D-x中,使用粒子系统有三种方法:
1)新建一个粒子系统CCParticleSystemQuad类并调整它的参数;
2)直接使用CCParticleSystemQuad类的子类来创建相关的粒子系统;
3)使用粒子编辑器来创建粒子系统(plist文件).
CCParticleSystem* fire = CCParticleFire::create();
CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("fire.png");
fire->setTexture(texture);
this->addChild(fire);
fire->setPosition(100,110);
新建CCParticleSystemQuad类并调整它的参数:
void DemoBigFlower::onEnter(){
ParticleDemo::onEnter();
m_emitter = new CCParticleSystemQuad();
m_emitter->initWithTotalParticles(50);
m_background->addChild(m_emitter,10);
m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage(...));
m_emitter->setDuration(-1);
m_emitter->setGravity(CCPointZero);
m_emitter->setAngle(90);
m_emitter->setAngleVar(360);
m_emitter->setSpeed(160);
m_emitter->setSpeedVar(20);
m_emitter->setRadialAccel(-120);//角速度
m_emitter->setRadialAccelVar(0);
m_emitter->setTangentialAccel(30);//线速度
m_emitter->setTangentialAccelVar(0);
m_emitter->setPosition(CCPointMake(160,240));
m_emitter->setPositionVar(CCPointZero);
m_emitter->setLife(4);
m_emitter->setLifeVar(1);
m_emitter-setStartSpin(0);
m_emitter->setStartSpinVar(0);
m_emitter->setEndSpin(0);
m_emitter->setEndSpinVar(0);
ccColor4F startColor = {0.5f,0.5f,0.5f,1.0f};
m_emitter->setStartColor(startColor);
ccColor4F startColorVar = {0.5f,0.5f,0.5f,1.0f};
m_emitter->setStartColorVar(startColorVar);
ccColor4F endColor = {0.1f,0.1f,0.1f,0.2f};
m_emitter->setEndColor(endColor);
ccColor4F endColorVar = {0.1f,0.1f,0.1f,0.2f};
m_emitter->setEndColorVar(endColorVar);
m_emitter->setStartSize(80.0f);//设置初始大小,单位为像素
m_emitter->setStartSizeVar(40.0f)'
m_emitter->setEndSize(kParticleStartSizeEqualToEndSize);
m_emitter->setEmissionRate(m_emitter->getTotalParticles()/m_emitter->getLife());//发射速率
m_emitter->setBlendAdditive(true);//混合颜色添加
setEmitterPosition();
}
设置粒子系统位置:
void ParticleDemo::setEmitterPosition(){
CCSize s = CCDirector::sharedDirector()->getWinSize();
if(m_emitter != NULL){
m_emitter->setPosition(CCPointMake(s.width/2,s.height/2));
}
}
直接使用CCParticleSystemQuad类的子类创建粒子系统:
void DemoFlower::onEnter(){
ParticleDemo::onEnter();
m_emitter = CCParticleFlower::create();
m_emitter->retain();
m_background->addChild(m_emitter,10);
m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage(...));
setEmitterPosition();
}
通过plist文件创建粒子系统:
void ParticleBatchHybrid::onEnter(){
ParticleMemo::onEnter();
setColor(ccBLACK);
removeChild(m_background,ture);
m_background = NULL;
m_emitter = CCParticleSystemQuad::create("Particles/LaveFlow.plist");
m_emitter->retain();
CCParticleBatchNode* batch = CCParticleBatchNode::create(m_emitter->getTexture());
batch->addChild(m_emitter);
addChild(batch,10);
schedule(schedule_selector(ParticleBatchHybrid::switchRender,2.0f));
CCNode* node = CCNode::create();
addChild(node);
m_pParent1 = batch;
m_pParent2 = node;
}
播放时间到达后,屏幕上不会再有粒子特效了,但内存并没有被“清理”,因此需要使用粒子系统的父节点的removeChild函数删除粒子系统对象,彻底释放内存,否则就会出现内存泄露。
- cocos2d-x基本知识点:粒子系统
- cocos2d-x粒子系统
- cocos2d-x粒子系统
- cocos2d-x 粒子系统
- Cocos2d-x 粒子系统
- cocos2d-x 粒子系统
- Cocos2d-x粒子系统
- Cocos2d-x粒子系统
- cocos2d-x粒子系统
- Cocos2d-x 粒子系统
- cocos2d-x 粒子系统详解
- cocos2d-x CCParticleSystem粒子系统
- Cocos2d-x 粒子系统详解
- cocos2d-x CCParticleSystem粒子系统
- cocos2d-x CCParticleSystem粒子系统
- cocos2d-x CCParticleSystem粒子系统
- Cocos2d-x内置粒子系统
- cocos2d-x CCParticleSystem粒子系统
- C++ Vector用法
- cocos2d-x基本知识点:网络连接libcurl
- Notification和Activity交互
- 最优服务次序问题
- chrome浏览器收藏夹转到opera浏览器
- cocos2d-x基本知识点:粒子系统
- 贪心算法解汽车加油问题
- 南阳ACM24-素数距离问题
- 承载于以太网帧之上的数据包的解析——ARP、IPv4、IPv6
- 工作分配问题 assignment problem
- ddddddddddddd
- wzqs11
- Three Sum -- LeetCode [数组类]
- 最小重量机器设计问题