1

そのため、現時点では単純な静的な背景だけでゲームを作成しようとしていますが、画面に描画すると(画像の解像度が画面と同じであるため、スケーリングは行われません)、下部が描画されます。画像の下部数百ピクセルが画像の下に向かってまったく同じである場合、画像が正しくありません。申し訳ありませんが、説明するのはとても難しいですが、ここで新しいので、私は実際に何が悪いのかについての画像を投稿することはできません。

ここで、単純なスプライトを使用してこの背景画像をレンダリングします。使用されているコードは次のとおりです。

    // background layer: another image
    background = CCSprite.sprite("WaterBackground.png");
    // change the transform anchor point (optional)
    background.setPosition(CGPoint.make(GAME_WIDTH/2, GAME_HEIGHT/2));
    addChild(background);

私はここで何か間違ったことをしていますか?Cocos2Dはスプライト用のそのような大きな画像をサポートしていませんか?(800 * 1280の解像度)どんな助けでも大歓迎です!

画像をアップロードできるようになったので、ここに何が問題になっているのかを視覚的に示します。

見た目通りの画像

そして私のゲームの問題:

ここに画像の説明を入力してください

ご覧のとおり、問題を説明するのは難しいです。問題は、この大きな画像にのみ存在します。私はそれをGIMPで手動で縮小し、次にゲーム用に拡大しました、そしてそれはうまく見えました(より低い解像度であることを除いて)。また、この大きな画像を縮小してみましたが、それでも同じ問題が発生しました。何がこのエラーを引き起こす可能性があるのか​​私にはわからないので、皆さんが私を助けてくれることを願っています。特に、Cocos2Dでサポートされている最大画像サイズは2048 * 2048であり、私の画像はその範囲内にあることを読んだので。

あなたたちが提供できるどんな助けにも感謝します!

4

3 に答える 3

1

これは、テクスチャのサイズの制限によるものです。Coсos2d-androidは、最大サイズが1024x1024ピクセルの画像をサポートしています。

私は同じ問題に直面し、それを解決する方法を探していました。

編集

cocos2dプロジェクトで解決策を見つけました。org.cocos2d.openglパッケージのファイルCCTexture2d.javaを開き、kMaxTextureSizeを1024から2048に変更します。

于 2012-08-19T19:47:41.017 に答える
0

あなたのコードとcocos2dコードを見ると、これが発生する明確な理由はわかりませんが、画面に表示されるスプライトの数を考えると、間違いなくこの質問に対する私の答えを見てください。複数のスプライトの周りにあるcocos2dの風変わりな小さなレンダリング障害の1つにぶつかっている可能性があります。スプライトシートを試すのに害はありません。それは確かに、ココスで実際にスプライトを実行する正しい方法です。

また、iphoneとは異なり、Androidには画面解像度のほぼ無制限のバリエーションがあり、「ロード時にスケーリングする」という単純なビットがあるため、元の画像サイズと比較したデバイスのスケーリング比を決定するためのヘルパーユーティリティを自分で作成してください。 「ユーティリティコードを使用すると、他のデバイスでこれを使用したい場合に、将来的に多くの時間を節約できます。

于 2012-05-22T15:13:06.500 に答える
0

背景を追加するための1つのメソッドを作成する必要があります。このようにこれを行っています。これが、完全に役立つことを願っています。ここで、addBackGroundSceneが私のメソッドであり、このメソッドで背景を追加しています。scrXScaleFactorはスケーリングを維持しています。画面の一部でこれを試してください...

private void addBackGroundScene() {
        CCSprite bgForLevel1 = addBackgroundAtOrigin("prelevel1/bgMenu.jpg");
        bgForLevel1 .setScaleX(scrXScaleFactor);
            bgForLevel1 .setAnchorPoint(0, 0);          
            addChild(bgForLevel1 );

    }
于 2012-06-07T07:21:20.510 に答える