• cocos2d-x颜色混合模式完成光照效果


    使用Cocosd-x3.2的颜色混合功能和裁剪功能完成光照效果,简单易用,效果图如下:
    这里写图片描述
    代码:

    //底图,光照图(一般是有透明度的白色图) 光移动的时间,循环次数
    Node * HelloWorld::createFlashNode(const std::string &spName, const std::string &splashName, float duration,int loops)
    {
        auto clNode = ClippingNode::create();
        auto stecil = Sprite::create(spName);
        clNode -> setStencil(stecil);
        clNode -> setAlphaThreshold(0.1);
    
        auto star = Sprite::create(spName);
        clNode -> addChild(star);
    
        auto splash = Sprite::create(splashName);
        star -> addChild(splash);
         //关键代码
        splash -> setBlendFunc({GL_DST_COLOR,GL_ONE});
    //    splash -> setPosition(splash->getContentSize().width/2-star->getContentSize().width,splash->getContentSize().height/2);
    
        auto place = Place::create(Vec2(splash->getContentSize().width/2-star->getContentSize().width,splash->getContentSize().height/2));
        auto moto = MoveTo::create(duration, Vec2(splash->getContentSize().width/2+star->getContentSize().width,splash->getContentSize().height/2));
        auto seq = Sequence::create(place,moto, NULL);
        ActionInterval *repeat = nullptr;
        if (loops!=-1)
        {
            repeat = Repeat::create(seq, loops);
        }
        else
        {
            repeat = RepeatForever::create(seq);
        }
        splash -> runAction(repeat);
    
        return clNode;
    }
    
    //调用
    auto no = createFlashNode("xingxing.png", "light.png", 2);
    this -> addChild(no);
     no -> setPosition(300,300);
  • 相关阅读:
    VSCode settings.json的配置样例
    用css让div高度自动撑满屏幕
    C# 后端接受前端上传的文件
    netcode 控制台项目生成exe文件
    C# UDP发送和接收
    C# 直播录制视频
    Vs2017 FrameWork EF Mysql Mvc 三层整合1
    Vs2017 FrameWork EF Mysql 控制台应用
    Vs2017 NetCode EF Mysql 控制台应用
    Vs2017 NetCode Mvc EF Mysql 整合2
  • 原文地址:https://www.cnblogs.com/skyxu123/p/9543814.html
Copyright © 2020-2023  润新知