상상 너머 그 무언가...

sprite에 mask 설정하기 ( CCClippingNode ) 본문

개발관련(Development)/코코스2D(Cocos2D)

sprite에 mask 설정하기 ( CCClippingNode )

Clack 2015. 3. 11. 15:03

    //마스크를 씌우고자 하는 객체 생성

    m_BonusCloudCCSprite::create("bonus_game_cloud.png"));

    

    // 마스크 영역으로 사용할 객체 생성    

    CCSprite* cloudMask = CCSprite::create("bonus_game_bg.png"));

    cloudMask->setPosition( m_BonusCloud->getPosition());

    

    // 마스크 처리를 해주는 객체 생성

    CCClippingNode* maskClipper = CCClippingNode::create();

    maskClipper->setInverted(false);  //  true면 마스크영역만 객체가 안보이게, false면 마스크영역에만 객체가 보이게

    maskClipper->setAlphaThreshold(0);

    maskClipper->addChild( m_BonusCloud );  // 마스크를 적용할 객체 설정

    maskClipper->setStencil( node );  // 마스크처리 객체에 마스크모양에 사용할 객체 설정

    

    this->addChild( maskClipper );  //  마스크처리 객체를 화면에 표시

    

    m_BonusCloud->setPositionX(405);  // 마스크 대상 객체와 마스크 객체 좌표를 적절히 설정

    m_BonusCloud->setPositionY(230);

    cloudMask->setPosition( m_BonusCloud->getPosition());



    setStencil에 사용할 객체에 drawPolygon으로 폴리곤이 그려진 CCDrawNode를 사용해도 된다.

           

           cocos2d::CCSize size;

           CCDrawNode* shape = CCDrawNode::create();

           CCPoint pts[4];

           pts[0] = ccp( -size.width/2, size.height/2 );

           pts[1] = ccp( size.width/2, size.height/2 );

           pts[2] = ccp( size.width/2, -size.height/2 );

           pts[3] = ccp( -size.width/2, -size.height/2 );

           shape->drawPolygon(pts, 4, ccc4f(1, 1, 1, 1), 0, ccc4f(1, 0, 0, 1));