2011-11-23 43 views
4

我正在尝试制作一个“地牢爬行”类型的游戏演示,这是我第一次真正制作Pong & Pac-Man克隆以外的任何东西。现在我的大挂断是创造实际的水平。我已经完成了关于如何在屏幕上绘制图块的教程,但是我找不到从哪里出发。在XNA中创建和保存贴图地图

我该如何从一个屏幕去制作一个更大的地下城?任何帮助表示赞赏。

+1

是2D还是3D? – neeKo

回答

5

您应该考虑从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); 
    } 
} 
+0

这是一个很好的答案。对于像我这样的初学者非常有用。 @Jon,你知道网上有关于此的任何资源吗?试图找到基本的东西已被证明是一个巨大的浪费时间。我花了超过3周的时间寻找基本的东西(比如沿着平台做滚球),我还没有找到任何东西。 –

+1

@ÅőşęņŎńę你可以看看XNA资源中的tile引擎教程。它在解释这些概念方面做得很好:http://www.xnaresources.com/default.asp?page=TUTORIALS 沿平台做球滚动可能听起来很基本,但实际上有点复杂。您正在处理移动,碰撞检测和碰撞响应。 – jgallant

1

的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文件等中制作单个屏幕。