Cocos2d-x3.2 Grid3D網格動做

//GameScene.h

#include "cocos2d.h"

class GameScene : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();
    
    virtual bool init();
    
    void menuCallback(cocos2d::Ref* pSender);
    
    CREATE_FUNC(GameScene);
};



//GameScene.cpp

#include "GameScene.h"

USING_NS_CC;

cocos2d::Scene* GameScene::createScene()
{
    auto scene = Scene::create();   //建立一個場景
    auto layer = GameScene::create();   //建立一個圖層
    scene->addChild(layer);
    return scene;
}

//初始化當前的圖層
bool GameScene::init()
{
    if(!Layer::init())      //初始化父類
        return false;
    
    //獲取屏幕大小
    auto visibleSize = Director::getInstance()->getVisibleSize();
    auto size = Director::getInstance()->getWinSize();
    
    //建立網格節點
    auto nodegrid = NodeGrid::create();
    
    auto sprite = Sprite::create("OnePiece_1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    nodegrid->addChild(sprite);     //這裏注意是將精靈節點加到網格節點上
    this->addChild(nodegrid);
    
    Director::getInstance()->setDepthTest(false);   //使用網格以前須要取消OpenGL的深度測試
    
//    //翻頁效果
//    Director::getInstance()->setDepthTest(true);     //開啓深度檢測
//    auto pageturn = PageTurn3D::create(2, Size(20, 18));
//    nodegrid->runAction(pageturn);
//    
//    //震動效果
//    auto shaky = Shaky3D::create(6, Size(2, 1), 5, false);
//    nodegrid->runAction(shaky);
//    
//    //翻轉效果
//    auto flipX = FlipX3D::create(2);
//    auto reFlipX = flipX->reverse();
//    auto delay = DelayTime::create(2);      //延時2秒
//    nodegrid->runAction(Sequence::create(flipX, delay, reFlipX, NULL));
    
    //透鏡效果
    auto lens = Lens3D::create(5, Size(32, 24), Vec2(size.width/2, size.height/2), 300);  //參數依次爲:持續時間、網格大小、中心座標、半徑
    nodegrid->runAction(lens);
    
//    //液體效果
//    auto liquid = Liquid::create(3, Size(16, 12), 4, 10);   //參數依次爲:持續時間、網格大小、波紋數、振幅
//    nodegrid->runAction(liquid);
//    
//    //波紋效果
//    auto ripple = Ripple3D::create(5, Size(20, 16), Vec2(size.width/2, size.height/2), 300, 6, 50);
//    nodegrid->runAction(ripple);
//    
//    //波浪效果
//    auto wave = Waves3D::create(5, Size(25, 20), 6, 30);
//    nodegrid->runAction(wave);
    
    return true;
}

備註:一、使用網格以前須要取消OpenGL的深度測試,深度其實就是該象素點在3d世界中距離攝象機的距離,深度緩存中存儲着每一個象素點(繪製在屏幕上的)的深度值,深度測試決定了是否繪製較遠的象素點(或較近的象素點),一般選用較近的,而較遠優先能實現透視的果;node

          二、32*24的網格看起來會以爲更舒服。
緩存

                                                                                                               --湖南科技大學--賈則棟測試

相關文章
相關標籤/搜索