cocos2dx 特效 3D特效

本文详细介绍了Cocos2d-x中22种3D特效的使用方法及参数含义,包括3D晃动、3D瓷砖晃动、波动等特效,并提供了实例代码。
 

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

分类: c++ android cocos2dx sprite   4827人阅读  评论(0)  收藏  举报
  //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, CCSize(10, 10), 5, false);  
//    sp->runAction(shakyTiles3D);  

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

    //波动特效  
//    CCActionInterval* waves = CCWaves::create(5, CCSize(10, 10), 10, 20, true, true);  
//    sp->runAction(waves);  
 
   
  1. //    创建一个波动特效
  2. //    参数1:波动的速率
  3. //    参数2:振幅
  4. //    参数3:水平波动
  5. //    参数4:垂直波动
  6. //    参数5:网格大小
  7. //    参数6:特效持续时间
 

    //3D波动特效  
//    CCActionInterval* waves3D = CCWaves3D::create(5, CCSize(10, 10), 10, 20);  
//    sp->runAction(waves3D);  
      
   
  1.   //    创建一个3D波动特效
  2.     //    参数1:波动的速率
  3.     //    参数2:振幅
  4.     //    参数3:网格大小
  5.     //    参数4:特效持续时间

 //瓷砖洗牌特效  
//    CCActionInterval* shuffle = CCShuffleTiles::create(5, CCSize(50, 50), 50);  
//    sp->runAction(shuffle);  

    
  1. //    作用:瓷砖的洗牌特效
  2. //    参数1:随机数
  3. //    参数2:网格大小
  4. //    参数3:特效持续的时间
//3D瓷砖波动特效 // CCActionInterval* wavesTiles3D = CCWavesTiles3D::create(5, CCSize(10, 10), 10, 20); // sp->runAction(wavesTiles3D);
  1.    //    创建一个3D瓷砖波动特效
  2.     //    参数1:波动的速率
  3.     //    参数2:振幅
  4.     //    参数3:网格大小
  5.     //    参数4:特效持续时间
 

    //X轴 3D反转特效  
//    CCActionInterval* filpX = CCFlipX3D::create(5);  
//    sp->runAction(filpX);  
      
   
  1. //    作用:x轴3D反转特效
  2. //    参数:特效持续的时间

    //Y轴3D反转特效  
//    CCActionInterval* filpY = CCFlipY3D::create(5);  
//    sp->runAction(filpY);  

   
  1. //    CCActionInterval * flipY3D = CCFlipY3D::create(4);
  2. //    sp->runAction(flipY3D);
 

    //凸透镜特效  
//    CCActionInterval* lens = CCLens3D::create(2, CCSize(10, 10),CCPointMake(240, 160), 240);  
//    sp->runAction(lens);  

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

   
  1. //    作用:水波特效
  2. //    参数1:起始位子
  3. //    参数2:半径
  4. //    参数3:速率
  5. //    参数4:振幅
  6. //    参数5:网格大小
  7. //    参数6:特效持续的时间
 

    //液体特效  
//    CCActionInterval* liquid = CCLiquid::create(5, CCSize(10, 10), 4, 20);  
//    sp->runAction(liquid);  

   
  1. //    作用:液体特效
  2. //    参数1:速率
  3. //    参数2:振幅
  4. //    参数3:网格大小
  5. //    参数4:特效持续时间
 

    //扭曲旋转特效  
//    CCActionInterval* twirl = CCTwirl::create(50, CCSize(10, 10), CCPointMake(240, 160), 2, 2.5);  
//    sp->runAction(twirl);  

   
  1. //    作用:扭曲旋转特效
  2. //    参数1:扭曲旋转中心点
  3. //    参数2:扭曲旋转的次数
  4. //    参数3:振幅
  5. //    参数4:网格大小
  6. //    参数5:特效持续时间
 

    //破碎的3D瓷砖特效  
//    CCActionInterval* shatteredTiles = CCShatteredTiles3D::create(15, CCSize(10, 10), 50, true);  
//    sp->runAction(shatteredTiles);  

   
    1. //    作用:破碎的3D瓷砖特效
    2. //    参数1:范围
    3. //    参数2:是否开启z轴
    4. //    参数3:网格大小
    5. //    参数4:特效持续的时间
 

   

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


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

   
  1.   //    作用:部落格效果 , 从右下角到左下角
  2.     //    参数1:网格大小
  3.     //    参数2:特效持续的时间
      

    //折叠效果 从下到上  
//    CCActionInterval* fadeOutUpTiles = CCFadeOutUpTiles::create(5, CCSize(10, 10));  
//    sp->runAction(fadeOutUpTiles);  

   
  1. //    作用:折叠效果 从下到上
  2.     //    参数1:网格大小
  3.     //    参数2:特效持续的时间
 

    //折叠效果,从上到下  
//    CCActionInterval* fadeOutDownTiles = CCFadeOutDownTiles::create(4, CCSize(20, 50));  
//    sp->runAction(fadeOutDownTiles);  
    
   
  1.   //    作用:折叠效果 从上到下
  2.     //    参数1:网格大小
  3.     //    参数2:特效持续的时间
 


    //方块消失特效  
//    CCActionInterval* turnOffFiels = CCTurnOffTiles::create(4, CCSize(50, 50));  
//    sp->runAction(turnOffFiels);  

   
  1. //    作用:方块消失特效
  2.     //    参数1:网格大小
  3.     //    参数2:特效持续的时间
      

    //跳动的方块特效  
//    CCActionInterval* jumpTiles = CCJumpTiles3D::create(5, CCSize(20, 20), 5, 20);  
//    sp->runAction(jumpTiles);  

   
  1. //    作用:跳动的方格特效
  2. //    参数1:跳动的次数
  3. //    参数2:网格的大小
  4. //    参数3:特效持续的时间
 

    //分多行消失特效  
//    CCActionInterval* splitCols = CCSplitCols::create(5, 50);  
//    sp->runAction(splitCols);  

   
  1.     //    作用:分多列消失特效
  2.     //    参数1:列数
  3.     //    参数2:特效持续的时间
 
 
    //分多列消失特效  
//    CCActionInterval* splitRows = CCSplitRows::create(5, 50);  
//    sp->runAction(splitRows);  
 
   
  1. //    作用:分多行消失特效
  2. //    参数1:行数
  3. //    参数2:特效持续的时间
 

    //3D翻页特效  
    CCActionInterval* pageTurn3D = CCPageTurn3D::create(4, CCSize(20, 20));  
    sp->runAction(pageTurn3D); 
   
  1. //    作用:3D翻页特效
  2. //    参数1:网格大小
  3. //    参数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 ,比如在动作序列中增加一个时间间歇
 
 
 
 
 
 
 
 
 
 
 
### Cocos2D 特效实现方法 #### 粒子系统的应用 Cocos2d-x 中的粒子系统提供了强大的工具来增强游戏内的视觉体验。利用此特性可以轻松地模拟诸如火焰、烟雾或是魔法效果等自然现象[^1]。 ```cpp auto emitter = ParticleSystemQuad::create("fire.plist"); emitter->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); this->addChild(emitter); ``` 这段代码展示了如何加载预定义好的 plist 文件以快速实例化一个粒子发射器对象,并将其放置于屏幕中央位置显示出来。 #### 动画序列的应用 除了粒子外,连续帧动画也是构建吸引人的特效不可或缺的一部分。通过组合多张图片形成流畅的动作展示,能够有效提升场景的表现力[^3]。 ```cpp Vector<SpriteFrame*> animFrames; for(int i = 0; i < frameCount; ++i){ char szName[100] = {0}; sprintf(szName, "effect_%d.png", i); auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(szName); if (frame) { animFrames.pushBack(frame); } } auto animation = Animation::createWithSpriteFrames(animFrames, 0.1f); auto animate = Animate::create(animation); sprite->runAction(animate); ``` 上述例子说明了怎样从缓存中获取一系列图像资源并组成一段循环播放的动画片段,在指定的对象上执行该动作即可达到预期的效果呈现目的。 #### 图形绘制技术 对于一些较为简单的图形变换需求,则可以直接借助绘图接口完成自定义形状的设计工作。比如使用 `draw` 方法可以在节点内部自由描绘线条、圆弧乃至填充区域等内容[^2]。 ```cpp void MyNode::draw(Renderer *renderer, const Mat4& transform, uint32_t flags) { _customCommand.init(_globalZOrder); _customCommand.func = CC_CALLBACK_0(MyNode::onDraw, this, transform, flags); renderer->addCommand(&_customCommand); Node::draw(renderer, transform, flags); } void MyNode::onDraw(const cocos2d::Mat4& transform, uint32_t flags) { Director* director = Director::getInstance(); GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_COLOR); kmGLPushMatrix(); // 绘制逻辑... kmGLPopMatrix(); } ``` 此类方式给予开发者更大的灵活性去创造独一无二的艺术风格,同时也适用于处理实时变化的数据可视化任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值