这太奇怪了,我一辈子都想不通。
我正在研究一个奇怪的 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)
如果您有任何问题,请告诉我!