当我遇到同样的问题时,这篇文章帮助了我:
XNA 2D 相机
在小地图部分:你需要为你的小地图考虑一种设计风格。一种方法是根据墙壁在“真实”游戏世界中的位置和 NPC 的点为墙壁绘制矩形。如果您不想自己搞砸,网上有很多关于如何做这些的例子。
例子
假设您有一个基于网格的自上而下的游戏。
您的玩家看到 30x30 块,而世界是 300x300 块。例如,您可以使用 120x120 矩形大小(以像素为单位)将 60x60 块绘制到屏幕一角作为小地图,因此每个块可以绘制为 4 个像素。
现在您只需要知道播放器两侧分别有哪些 30 个方块。如果你知道玩家当前在哪个街区。您可以(在基于网格的游戏中):
// We assume that we created a World class that can get a block based on
// a Vector2D.
var playerBlock = World.GetBlockByPosition(player.Position);
// Set the TopLeft position of the minimap accordingly.
Vector2 minimapTopLeft = new Vector(500, 100);
// Draw each 4 pixel block from that TopLeft position (of minimap).
for (int i = -30; i <= 30; i++)
{
for (int j = -30; j <= 30; j++)
{
// Make sure World.GetBlock doesn't return null.
// Offset the location with the player's location (playerBlock).
int blockType = World.GetBlock(playerBlock.X + i, playerBlock.Y + j).Type;
// Draw the 4 pixel blocks based on the i and j vars and the
// minimapTopLeft as offset.
switch (blockType)
{
case 1:
// Draw dirt.
break;
case 2:
// Etc.
break;
default:
// Draw default black block.
break;
}
}
}
我希望这会让您对如何做到这一点有所了解。我建议在互联网上搜索更多示例。