2013-02-26 5 views
4

Мне любопытно, как создать бесконечный фон в cocos2d. Например, скажем, я создавал приложение с человеком, работающим слева направо, и я хочу, чтобы он бежал бесконечно. В таком случае мне пришлось бы иметь бесконечный фон, чтобы человек мог продолжать работать. Я постоянно искал этот вопрос и не нашел ничего, что действительно работает.Cocos2D Infinite Background Изображение

Любые предложения, ответы и советы заслуживают высокой оценки.

Благодаря

+0

читать: http://www.learn-cocos2d.com/2012/12/ways-scrolling-cocos2d-explained/ – LearnCocos2D

ответ

5

Попробуйте:

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
#define MM_BG_SPEED_DUR  (IS_IPAD ? (6.0f) : (2.0f)) 



-(void)onEnter 
{ 
    [super onEnter]; 
    [self initBackground]; 

    [self schedule: @selector(tick:)]; 
} 


-(void)initBackground 
{ 
    NSString *tex = @"BG/Background.png";//[self getThemeBG]; 

    mBG1 = [CCSprite spriteWithFile:tex]; 
    mBG1.position = ccp(s.width*0.5f,s.height*0.5f); 
    [self addChild:mBG1 z:LAYER_BACKGROUND]; 

    mBG2 = [CCSprite spriteWithFile:tex]; 
    mBG2.position = ccp(s.width+s.width*0.5f,s.height*0.5f); 

    mBG2.flipX = true; 
    [self addChild:mBG2 z:LAYER_BACKGROUND]; 

} 


-(void)scrollBackground:(ccTime)dt 
{ 
    CGSize s = [[CCDirector sharedDirector] winSize]; 

    CGPoint pos1 = mBG1.position; 
    CGPoint pos2 = mBG2.position; 

    pos1.x -= MM_BG_SPEED_DUR; 
    pos2.x -= MM_BG_SPEED_DUR; 


    if(pos1.x <=-(s.width*0.5f)) 
    { 
     pos1.x = pos2.x + s.width; 
    } 

    if(pos2.x <=-(s.width*0.5f)) 
    { 
     pos2.x = pos1.x + s.width; 
    } 

    mBG1.position = pos1; 
    mBG2.position = pos2; 

} 

-(void)tick:(ccTime)dt 
{ 
    [self scrollBackground:dt]; 
} 
2

Самым простым способом будет включать два фоновых изображения, которые меш легко вместе. (CCSprite отлично справится с этим). В вашем методе обновления, как только первый фон полностью отключен от экрана, переместите его обратно на другую сторону экрана непосредственно рядом со вторым фоном и постоянно перемещайте оба фоновых изображения. Повторите этот процесс и для второго фона.

1

CCTMXTiledMap может вам помочь, но я боюсь, что вы должны обработать конец карты и добавить другое вручную. Проверьте это учебниками, как использовать кафельные карты в скролинговых играх, надеюсь, что это будет полезно для вас:

http://www.raywenderlich.com/15230/how-to-make-a-platform-game-like-super-mario-brothers-part-1

0

Попробуйте this. Его очень легко реализовать и хорошо работает. Просто следуйте инструкциям по чтению.

Смежные вопросы