1

私は現在、位置が歩行可能かどうかを示すためにタイルを使用する MonoGame を使用したトップダウン ゲームに取り組んでいます。タイルのサイズは 32x32 (画像にもあります)

200 x 200 のグリッドが壁のタイルで埋められています (そして、ランダム ジェネレーターがパスと部屋を作成することになっています) が、画面にすべてのタイルを描画すると、多くのタイルが失われます。以下は、位置 (x81 y183) の後にタイルが描画されない画像ですか?

http://puu.sh/3JOUO.png

配列を埋めるために使用されるコードは、壁タイルをグリッドに配置します。タイルの位置は、その配列位置にタイル サイズ (32x32) を掛けたものです。親はカメラ位置に使用されます。

    public override void Fill(IResourceContainer resourceContainer)
    {
        for (int i = 0; i < width; i++)
            for (int j = 0; j < height; j++)
            {
                objectGrid[i, j] = new Wall(resourceContainer);
                objectGrid[i, j].Parent = this;
                objectGrid[i, j].Position = new Vector2(i * TileWidth, j * TileHeight);
            }
    }

描画するときは、すべてのタイルをループして、それに応じて描画します。これは Game.Draw 関数で起こることです

    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.Yellow);

        // TODO: Add your drawing code here
        spriteBatch.Begin();
        map.Draw(gameTime, spriteBatch);

        spriteBatch.End();
        base.Draw(gameTime);
    }

map.draw 関数は、基本的に各タイルを描画するこの関数を呼び出します。各タイルの描画呼び出しがヒットした回数にカウンターを置いてみました。描画関数が更新されるたびに、使用するタイルの量である 40000 回呼び出されます。だからそれはそれらすべてを描画しますが、私はまだそれらすべてを画面に表示していません

    public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
    {
        for (int i = 0; i < width; i++)
            for (int j = 0; j < height; j++)
            {
                if (objectGrid[i, j] != null)
                {
                    objectGrid[i, j].Draw(gameTime, spriteBatch);
                }
            }
    }

これは、タイルを描画するためのコードです。現在の画像は常に 0 で、GlobalPositionはタイルの位置からカメラの位置を引いたものです。

    public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
    {
        if (visible)
            spriteBatch.Draw(textures[currentImage], GlobalPosition, null, color, 0f, -Center, 1f, SpriteEffects.None, 0f);
    }

コードの壁についてお詫び申し上げます。私にはすべてが非常に単純に見えますが、すべてのタイルを描画していない理由がわかりません。描画されていないタイルの表示はまだtrueで、currentImageは 0 である必要があります

4

1 に答える 1

1

モノゲーム スプライトバッチには、多数の 16 ビット イメージを描画するときに、まだいくつかのバグとエラーがあります。私の場合、約 200.000 です。これは簡単に解決できるものではありません。同じ問題が発生した場合は、描画するすべての画像が画面上にあることを確認してください。これで問題が発生することはおそらくないでしょう。

于 2013-07-26T14:12:00.703 に答える