4

cocos2dで無限の背景を作成する方法に興味があります。たとえば、男性が左から右に走っているアプリを作成していて、彼に無限に実行してもらいたいとします。その場合、男が走り続けることができるように、私は無限の背景を持っている必要があります。私はこの問題を継続的に検索しましたが、実際に機能するものは何も見つかりませんでした。

どんな種類の提案、回答、ヒントも大歓迎です。

ありがとう

4

4 に答える 4

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];
}
于 2013-02-27T05:41:30.917 に答える
2

最も簡単な方法は、シームレスに噛み合う2つの背景画像を含めることです。(CCSpriteはこれで問題なく動作します)更新方法では、最初の背景が画面から完全に離れたらすぐに、画面の反対側の2番目の背景のすぐ隣に戻し、両方の背景画像を継続的に移動します。2番目の背景についてもこのプロセスを繰り返します。

于 2013-02-26T22:13:26.290 に答える
1

CCTMXTiledMapあなたを助けることができますが、私はあなたが地図の終わりを処理し、手動で別のものを追加しなければならないのではないかと心配しています。横スクロールゲームでタイルマップを使用する方法については、このチュートリアルを確認してください。お役に立てば幸いです。

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

于 2013-02-26T22:22:31.317 に答える
0

これを試してください。実装は非常に簡単で、うまく機能します。readmeのチュートリアルに従ってください。

于 2013-02-28T01:08:04.270 に答える