我正在尝试制作一个“地牢爬行”类型的游戏演示,这是我第一次真正制作Pong & Pac-Man克隆以外的任何东西。现在我的大挂断是创造实际的水平。我已经完成了关于如何在屏幕上绘制图块的教程,但是我找不到从哪里出发。在XNA中创建和保存贴图地图
我该如何从一个屏幕去制作一个更大的地下城?任何帮助表示赞赏。
我正在尝试制作一个“地牢爬行”类型的游戏演示,这是我第一次真正制作Pong & Pac-Man克隆以外的任何东西。现在我的大挂断是创造实际的水平。我已经完成了关于如何在屏幕上绘制图块的教程,但是我找不到从哪里出发。在XNA中创建和保存贴图地图
我该如何从一个屏幕去制作一个更大的地下城?任何帮助表示赞赏。
您应该考虑从2维数组开始。通过这种方式,您可以非常容易地直观地表示数据。
与初始化启动关:
//2D array
int[,] array;
一些样本数据:
array= new int[,]
{
{0, 2, 2, 0},
{3, 0, 0, 3},
{1, 1, 1, 1},
{1, 0, 0, 0},
};
创建自己的枚举,这将索引地图中的每个整数:
enum Tiles
{
Undefined = 0,
Dirt = 1,
Water = 2,
Rock = 3
}
然后加载你的纹理,以及一次只查看你的数组一个项目。根据您的纹理尺寸,你可以很容易地在屏幕上绘制的纹理,因为在你的地图介绍:
for (int i = 0; i < array.Count; i++)
{
for (int j = 0; j < array[0].Count; j++) //assuming always 1 row
{
if (array[i][j] == (int)Tiles.Undefined) continue;
Texture = GetTexture(array[i][j]); //implement this
spriteBatch.Draw(Texture, new Vector2(i * Texture.Width, j * Texture.Height), null, Color.White, 0, Origin, 1.0f, SpriteEffects.None, 0f);
}
}
这是一个很好的答案。对于像我这样的初学者非常有用。 @Jon,你知道网上有关于此的任何资源吗?试图找到基本的东西已被证明是一个巨大的浪费时间。我花了超过3周的时间寻找基本的东西(比如沿着平台做滚球),我还没有找到任何东西。 –
@ÅőşęņŎńę你可以看看XNA资源中的tile引擎教程。它在解释这些概念方面做得很好:http://www.xnaresources.com/default.asp?page=TUTORIALS 沿平台做球滚动可能听起来很基本,但实际上有点复杂。您正在处理移动,碰撞检测和碰撞响应。 – jgallant
的PSK http://msdn.microsoft.com/en-us/library/dd254918(v=xnagamestudio.31).aspx是由微软创建了一个演示使用的ASCII文件创建水平。还有很多演示和教程以及其他内容。 Jon所描述的方法是一样的。
例如:
.......
.....e.
xx...xx
..s....
其中一个点是空的空间,s是起始位置和e是敌人。因为你知道每个图块都是(例如)32x32像素,所以你简单地将's'放置在坐标(2x32,3 * 32)上。
有很多种方法来处理这个难题。
要制作多个屏幕,您需要实现相机类。你可能想要的是一个滚动级别。但是我建议你在进一步学习之前先学习从数组,ascii文件等中制作单个屏幕。
如果您实施tiled map format的保存/加载,设计地图会容易得多。
是2D还是3D? – neeKo