zoukankan      html  css  js  c++  java
  • Cocos2d-x学习笔记(十二)3D特效

    特效类即是GridAction类,其实就是基于网格的3D动作类。需开启OpenGL的深度缓冲,否则容易3D失真。

    下边是一个snippet,创建网格对象,并将其添加到当前layer;同时,将进行3D特效的对象,添加到网格对象上。

            gridNodeTarget = NodeGrid::create();
        addChild(gridNodeTarget);// add to current layer
    
        auto bg = Sprite::create("background.png");
        bg->setPosition(Vec2(visibleSize.width/2, visibleSize.height /2));
        gridNodeTarget->addChild(bg);
    
        sprite = Sprite::create("hero.png");
        sprite->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
        gridNodeTarget->addChild(sprite);
    View Code

    下边是3D特效类的使用,在此不再展示效果。

    void MyAction::goMenu(Ref* pSender)
    {   
        Size visibleSize = Director::getInstance()->getVisibleSize();
        log("Tag = %i",this->getTag());
        
        switch (this->getTag()) {
            case kFlipX3D:
                // X轴3D翻转,参数为持续时间
                gridNodeTarget->runAction(FlipX3D::create(3.0f));
                break;
            case kPageTurn3D:
                // 翻页特效,第一个参数为持续时间,第二个参数为网格大小
                gridNodeTarget->runAction(PageTurn3D::create(3.0f, Size(15,10)));
                break;
            case kLens3D:
                // 凸透镜特效,第一个参数为持续时间,第二参数为网格大小,第三个参数为透镜中心,第四个参数为透镜半径
                gridNodeTarget->runAction(Lens3D::create(3.0f, Size(15,10),Vec2(visibleSize.width/2,visibleSize.height/2),240));
                break;
            case kShaky3D:
                // 晃动特效,第一个参数为持续参数,的哥参数为网格大小,第三个参数为晃动范围,第四个参数为Z轴晃动
                gridNodeTarget->runAction(Shaky3D::create(3.0f, Size(15,10),5,false));
                break;
            case kWaves3D:
                //  3D波动特效,第一个参数为持续时间,第二个参数为网格大小,第三个参数为波动次数,第四个参数为振幅
                gridNodeTarget->runAction(Waves3D::create(3.0f, Size(15,10),5,40));
                break;
            case kJumpTiles3D:
                // 3D瓦片跳动特效,第一个参数为持续时间,第二个参数为网格大小,第三个参数为次数,第四个参数为振幅
                gridNodeTarget->runAction(JumpTiles3D::create(3.0f,Size(15,10),2,30));
                break;
            case kShakyTiles3D:
                // 3D瓦片晃动特效,第一个参数为持续时间,第二个参数为网格大小,第三个参数为晃动范围,第四个参数为是否伴有Z轴晃动
                gridNodeTarget->runAction(ShakyTiles3D::create(3.0f,Size(16,12),5,false));
                break;
            case kWavesTiles3D:
                // 3D瓦片波动特效,第一个参数为持续时间,第二个参数为网格大小,第三个参数为波动次数,第四个参数为振幅
                gridNodeTarget->runAction(WavesTiles3D::create(3.0f,Size(15,10),4,120));
                break;
        }
    }
    View Code

    其实,3D效果无非是通过范围控制将2D的效果变得更逼真,更接近现实世界。

  • 相关阅读:
    Grid 网格布局
    final变量属性小记
    色温与光合作用
    自定义CheckBox
    关于final局部变量引用的研究
    面向空实现类继承
    Android tips tool 发现的性能问题(转载翻译)
    org.json与json-lib的区别(补充 FastJson)
    设计模式之禅——心得总结
    大学本科毕业论文——LanguageTool语法校正规则库的开发
  • 原文地址:https://www.cnblogs.com/AmitX-moten/p/4217559.html
Copyright © 2011-2022 走看看