Это так странно, и я не могу для жизни понять это.Фоновая движущаяся разная скорость XNA
Я работаю над странным клоном 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)
Если у вас есть какие-либо вопросы, дайте мне знать!
Вы устанавливаете то же значение '.speed' для всех частей платы? –
@ Joe да, его набор как общедоступный переменный для облегчения доступа (cz im lazy) в классе Piece. Его набор равен 5 по конструкции и никогда не был изменен после этого. – Nick