背景移动速度不同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都一样吗?我不确定这是否有帮助,但如果这些板一直相对静止,也许你可以把所有的板放在一个"根"下,每个板都保持着与"根"的相对位置。然后你可以通过改变"根"的位置来移动世界,并通过root.position+board[i,j].position获得板的绝对位置。祝你好运。

最新更新