0

これはとても奇妙で、私の人生ではそれを理解することはできません.

私は奇妙な pacman クローンに取り組んでおり、ズームインするとマップがランダムに生成されます。基本的に迷路ゲームです。

私の問題は、マップを生成してから、プレーヤーではなくマップを移動させることです (プレーヤーを画面の中央に保持すると、マップのピースが異なる速度で移動します。配列 (9x9) があります)マップのさまざまな部分を保持します. 各部分は .png ファイルです. .png は、私が作成した黒い道と青い壁の写真です.

私はこれらの 11 のシリーズを持っています (それぞれ異なる形状)。マップが生成されると、配列内の位置に対応する中心 (プレイヤーが開始する場所) に対する相対的な位置がそれぞれに与えられます。プレーヤーが移動すると、画面内の画像が移動し、移動に応じて残りの位置が変化します。プレイヤーに見えるピースだけを描画して、ゲームをよりスムーズに実行します。

移動のコードは次のとおりです。

public void Update(GameTime gametime, Player player, KeyboardState keyboard, Rectangle mainFrame)
{
    if (keyboard.IsKeyDown(Keys.Left) || keyboard.IsKeyDown(Keys.A))
    {
        player.fakePosition.X -= 1;
        for (int i = 0; i < 9; i++)
            for (int j = 0; j < 9; j++)
                board[i, j].X += board[i, j].speed;
    }

    if (keyboard.IsKeyDown(Keys.Right) || keyboard.IsKeyDown(Keys.D))
    {
        player.fakePosition.X += 1;
        for (int i = 0; i < 9; i++)
            for (int j = 0; j < 9; j++)
                board[i, j].X -= board[i, j].speed;
    }

    if (keyboard.IsKeyDown(Keys.Up) || keyboard.IsKeyDown(Keys.W))
    {
        player.fakePosition.Y -= 1;
        for (int i = 0; i < 9; i++)
            for (int j = 0; j < 9; j++)
                board[i, j].Y += board[i, j].speed;
    }

    if (keyboard.IsKeyDown(Keys.Down) || keyboard.IsKeyDown(Keys.S))
    {
        player.fakePosition.Y += 1;
        for (int i = 0; i < 9; i++)
            for (int j = 0; j < 9; j++)
                board[i, j].Y -= board[i, j].speed;
    }

    for (int i = 0; i < 9; i++)
        for (int j = 0; j < 9; j++)
            if (board[i, j].visibleBox.Intersects(mainFrame))
                board[i, j].Visible = true;
}

私が気づいたことから、ドローが上にあるほど(リストの奥にあるほど(テスト目的で最初にそれらをすべて重ねて描画しているため)、動きが速くなります。しかし、それらはすべて同じ速度 (5 に等しい)

ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1