acctman
acctman

Reputation: 4349

adding Parallax Scrolling cocos2d

currently I am adding my background via the method below. how can I modify the background so that it auto scrolls along with the tilemap.

- (void)setupParallax {

    NSString *backgroundName = [self.tilemap propertyNamed:@"BackgroundImage"];

    CCSprite *background = [CCSprite spriteWithFile:[AssetHelper     
                       getDeviceSpecificFileNameFor:[NSString stringWithFormat:@"background-%@.png",backgroundName]]];
    background.anchorPoint = ccp(0,0);
    background.position = CGPointMake(0, 0);

    [self addChild:background z:0];
}

Upvotes: 1

Views: 1240

Answers (1)

ssantos
ssantos

Reputation: 16536

You may use a CCParallaxNode. Your background and map would be children of the parallaxNode, and when you move it, its children will automatically move accordingly. Assuming the background should be behind your map, the code will look something like this.-

CCParallaxNode *voidNode = [CCParallaxNode node];    
[voidNode addChild:background z:10 parallaxRatio:ccp(0.8f, 0.8f) positionOffset:ccp(0, 0)];
[voidNode addChild:map z:20 parallaxRatio:ccp(1.0f, 1.0f) positionOffset:ccp(0, 0)];
[self addChild:voidNode];

ParallaxRatio will set the speed of each layer based on ParallaxNode movement:

  • (1.0, 1.0) means that the map will move at the same speed that the voidNode among x and y.
  • (0.8, 0.8) means that the background will move 80% slower than the ParallaxNode

Upvotes: 1

Related Questions