2012-05-29 59 views
3

我正在学习XNA,但在将精灵放置在瓷砖地图上时有一些缺陷。在瓷砖地图上显示精灵XNA

这里是香港专业教育学院的尝试:

public void Draw(SpriteBatch spriteBatch,int tileWidth,int tileHeight) 
    { 
     spriteBatch.Draw(texture , position , Color.White); 
    }// This code draws the sprite but the sprite is not on the tile map but outside it. 


public void Draw(SpriteBatch spriteBatch,int tileWidth,int tileHeight) 
    { 
     spriteBatch.Draw(texture , new Rectangle((int)position.X * tileWidth , (int)position.Y * tileHeight , tileWidth , tileHeight) , Color.White); 
    }// And this code does nothing, doesnt even draw the sprite 

这是二维数组:

int[ , ] map = { 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
         {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
         {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
         {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
         {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
         {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, 
        }; 

,其中0 =墙上& 1 =通路

请告诉我或告诉我如何去绘制只在地图上的精灵?

感谢

编辑:我遇到的问题是,精灵(上底部的黑色方形右)如果向左移动,变褐色后面(这是瓦图的PRT)。我如何让这个它移动的瓦片地图上面,而不是下面

In game picture

+0

相似,但任天堂DS做了什么。使用一个自定义的字体文件,但用精灵替换字符,所以'X'将是一堵墙,一个'Z'将成为敌人。你会想循环遍历数组绘制你的精灵,在哪里'i = X'等...... – dtsg

+0

@duane嗨,请检查我的编辑 –

+2

你可以通过在绘制前设置'SpriteSortMode'来阻止这种情况发生 – dtsg

回答