0

私のゲームのレベルの幅が画面幅の 3 倍で、プレーヤーが一番左端から開始するとします。このレベルの最初の右端から始まるカメラ フライバイを実装してワールド全体をスクロールし、プレーヤーが先に何を期待できるかを知るにはどうすればよいですか?

ここでこの投稿http://www.cocos2d-iphone.org/forum/topic/9568に出くわしました。これは役に立ちそうなもので、コードのブロックを借りて に入れましたGameWorldLayerが、うまくいきませんでした。基本的に黒い画面しか表示されません。どうしたの?そして、これを実装するより良い方法は何でしょうか?

-(void)visit {
    CGSize screenDims = [[CCDirector sharedDirector] winSizeInPixels];
    CGPoint camPos = gameCamera.position;
    float camZoom = gameCamera.zoom;
    [[CCDirector sharedDirector] setProjection:kCCDirectorProjectionCustom];

    //now set your projection
    kmGLMatrixMode(KM_GL_PROJECTION);
    //save current projection state
    kmGLPushMatrix();
    kmGLLoadIdentity();

    kmMat4 orthoMat;
    kmMat4OrthographicProjection(&orthoMat,
         camPos.x -screenDims.width/(2*camZoom),
         camPos.x +screenDims.width/(2*camZoom),
         camPos.y +screenDims.height/(2*camZoom),
         camPos.y -screenDims.height/(2*camZoom),
         -1000,
         1000);

    kmGLMatrixMode(KM_GL_MODELVIEW);
    kmGLLoadIdentity();

    [super visit];

    //put it back
    kmGLMatrixMode(KM_GL_PROJECTION);
    kmGLPopMatrix();
    kmGLMatrixMode(KM_GL_MODELVIEW);
    kmGLLoadIdentity();
}
4

1 に答える 1

0

それはすべて、あなたが望むものを複雑にする方法です。レイヤーを最初のレベルの最後に配置し、それを最初に移動するだけです。

[layer runAction:[CCMoveTo actionWithDuration:10 position:ccp(starty, startx)]];

20は「フライバイ」にかかる時間で、位置は開始位置です

于 2013-04-04T20:45:35.983 に答える