ParallaxNode

CCParallaxNode¸¦ ÀÌ¿ëÇÏ¿© ¹è°æ À̹ÌÁö¸¦ ½ºÅ©·Ñ Çغ¸ÀÚ.

cocos2d-2.0-x-2.0.4/samples/TestCpp/Resources/Images¿¡¼­ background.png¸¦ º¹»çÇÑ´Ù.

CCParallaxNode¸¦ »ý¼ºÇÏ¿© ½ºÇÁ¶óÀÌÆ® Ãß°¡½Ã(addChild)¿¡ parallaxRatio·Î ¼Óµµ¸¦ ÁöÁ¤ ÇÑ´Ù.
CCParallaxNodeÀÇ ½ºÅ©·ÑÀº runActionÀ¸·Î Á¦¾îÇÑ´Ù.
 

1. Æз²·º½º³ëµå »ý¼º
2. ¹è°æ À̹ÌÁö ·Îµù
3. ¶Ç ´Ù¸¥ ¹è°æ À̹ÌÁö ·Îµù(¹öÆ° À̹ÌÁö¸¦ º®À¸·Î »ý°¢ÇÑ´Ù)
4. »çÀÌµå ½ºÅ©¸¦ ¾×¼Ç »ý¼º
5. ÆÓ·²·º½º¿¡ ¾×¼Ç Ãß°¡
6.  ·¹À̾ Æз²·º½º ³ëµå Ãß°¡

2°³ÀÇ ¹è°æ À̹ÌÁö°¡ ¼Óµµ°¡ ´Ù¸£°Ô(½ÃÂ÷¸¦ µÎ°í)  ¿òÁ÷ÀÌ°í ÀÖ´Ù.
( ¹ÙÅÁÀÌ µÇ´Â ½£ À̹ÌÁö¿Í ¿©±â¼­´Â ¹öÆ°À» ¹è°æ À̹ÌÁö2·Î »ç¿ë ÇÏ¿´´Ù.)

´Ü°èº°·Î ¾Ë¾Æ º¸ÀÚ.

1. Æз²·º½º³ëµå »ý¼º

¹è°æ À̹ÌÁö¸¦ Ãß°¡ ÇÒ ¼ö ÀÖµµ·Ï CCParallaxNode¸¦ »ý¼ºÇÑ´Ù.

CCParallaxNode *parallaxNode = CCParallaxNode::create()

2. ¹è°æ À̹ÌÁö ·Îµù

½ºÇÁ¶óÀÌÆ® À̹ÌÁö¸¦ ·ÎµùÇÏ¿© Æз²·º½º³ëµå¿¡ Ãß°¡ ÇÑ´Ù.
µÎ ¹ø° ÀÎÀÚ parallaxRatio´Â ¼Óµµ ºñÀ²ÀÌ´Ù. ij¸¯ÅÍ¿Í °°Àº ¼Óµµ¶ó¸é 1·Î ÁØ´Ù.

parallaxNode->addChild(background, -1, ccp(1, 0), CCPointZero)

3. ¶Ç ´Ù¸¥ ¹è°æ À̹ÌÁö ·Îµù(¹öÆ° À̹ÌÁö¸¦ º®À¸·Î »ý°¢ÇÑ´Ù)

¹öÆ° ½ºÇÁ¶óÀÌÆ® À̹ÌÁö´Â XÃàÀ¸·Î 10¹è³ª ºü¸£°Ô ¿òÁ÷À̵µ·Ï ÇÏ¿´´Ù.

parallaxNode->addChild(wall, 0, ccp(10, 0), ccp(300, 100))

4. »çÀÌµå ½ºÅ©¸¦ ¾×¼Ç »ý¼º

ÁÂ, ¿ì ¹Ýº¹µÈ Ⱦ½ºÅ©·Ñ ¾×¼ÇÀ» ÀÛ¼ºÇÑ´Ù.

CCActionInterval *go = CCMoveBy::create(3, ccp( -100, 0));
CCActionInterval *goBack = go->reverse();
CCFiniteTimeAction *seq = CCSequence::create( go, goBack, NULL);
CCAction *act = CCRepeatForever::create(( CCActionInterval*) seq);


5. ÆÓ·²·º½º¿¡ ¾×¼Ç Ãß°¡

Ⱦ½ºÅ©·Ñ ¹Ýº¹ ¾×¼ÇÀ» ½ÇÇàÇÑ´Ù.

parallaxNode->runAction( act)

6.  ·¹À̾ Æз²·º½º ³ëµå Ãß°¡

·¹À̾ ÃÖÁ¾ÀûÀ¸·Î Ãß°¡ÇØ¾ß È­¸é¿¡¼­ º¼¼ö ÀÖ´Ù.

this->addChild( parallaxNode, 0)

CCParallaxNode
//Æз²·º½º³ëµå »ý¼º
CCParallaxNode *parallaxNode = CCParallaxNode::create();

//¹è°æ À̹ÌÁö ·Îµù
CCSprite *background = CCSprite::create("Images/background.png");
background->setAnchorPoint( CCPointZero);
parallaxNode->addChild(background, -1, ccp(1, 0), CCPointZero);

//¶Ç ´Ù¸¥ ¹è°æ À̹ÌÁö ·Îµù(¹öÆ° À̹ÌÁö¸¦ º®À¸·Î »ý°¢ÇÑ´Ù)
CCSprite *wall = CCSprite::create("Images/btn-highscores-normal.png");
wall->setAnchorPoint( CCPointZero);
parallaxNode->addChild(wall, 0, ccp(10, 0), ccp(300, 100));

//»çÀÌµå ½ºÅ©¸¦ ¾×¼Ç »ý¼º
CCActionInterval *go = CCMoveBy::create(3, ccp( -100, 0));
CCActionInterval *goBack = go->reverse();
CCFiniteTimeAction *seq = CCSequence::create( go, goBack, NULL);
CCAction *act = CCRepeatForever::create(( CCActionInterval*) seq);

//ÆÓ·²·º½º¿¡ ¾×¼Ç Ãß°¡
parallaxNode->runAction( act);

//·¹À̾ Æз²·º½º ³ëµå Ãß°¡
this->addChild( parallaxNode, 0);

 

Âü°í )

Å« ¹è°æ ½ºÅ©·Ñ

µð¹ÙÀ̽º¿¡ µû¶ó ³Ê¹« Å« À̹ÌÁö¸¦ ó¸® ¸ø ÇÒ ¼öµµ ÀÖ´Ù.
À̶§´Â, À̹ÌÁö¸¦ ºÐÇÒÇÏ¿© ½ºÅ©·Ñ ÇÏ¸é µÈ´Ù.

µÎ °³ÀÇ À̹ÌÁö·Î ºÐ¸® ÇßÀ» ¶§ À̹ÌÁöÀÇ Å©±âÀÌ´Ù.

À̹ÌÁö1 : 287 X 376
À̹ÌÁö2 : 277 X 376

CCParallaxNode¿¡ ½ºÇÁ¶óÀÌÆ® À̹ÌÁö¸¦ Ãß°¡ ÇÒ ¶§(addChild) ¼¼ ¹ø° Àμö positionOffset¿¡¼­ À̹ÌÁöÀÇ  À§Ä¡¸¦ ÁØ´Ù.

Áï, µÎ ¹ø° À̹ÌÁö Ãß°¡½Ã¿¡ XÃàÀÇ offsetÀ» 287·Î ÁØ´Ù.

Big Sprite Image
//¹è°æ À̹ÌÁö ·Îµù
CCSprite *background = CCSprite::create("Images/min1.png");
background->setAnchorPoint( CCPointZero);
parallaxNode->addChild(background, -1, ccp(1, 0), CCPointZero);

//¶Ç ´Ù¸¥ ¹è°æ À̹ÌÁö ·Îµù(¹öÆ° À̹ÌÁö¸¦ º®À¸·Î »ý°¢ÇÑ´Ù)
CCSprite *wall = CCSprite::create("Images/min2.png");
wall->setAnchorPoint( CCPointZero);
parallaxNode->addChild(wall, -1, ccp(1, 0), ccp(287, 0));

Ȥ½Ã¶óµµ À̹ÌÁö°¡ ¸¸³ª´Â ºÎºÐ¿¡ °ËÀº ÀÚ±¹ÀÌ »ý±ä´Ù¸é Anti-AliasingÀ» ²ö´Ù.

 
background->getTexture()->setAliasTexParameters();
wall->getTexture()->setAliasTexParameters();