Cocos2d-x学习笔记(八)—— 粒子系统,场景切换,网格特效

前端之家收集整理的这篇文章主要介绍了Cocos2d-x学习笔记(八)—— 粒子系统,场景切换,网格特效前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

粒子系统

用于在游戏的场景中生成特效,减少美工工作,可生成类似火焰,星星等的特效,效率高。为了方便开发,我们还可以利用粒子系统编辑器生成相应的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相关文章