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)。我如何让这个它移动的瓦片地图上面,而不是下面
相似,但任天堂DS做了什么。使用一个自定义的字体文件,但用精灵替换字符,所以'X'将是一堵墙,一个'Z'将成为敌人。你会想循环遍历数组绘制你的精灵,在哪里'i = X'等...... – dtsg
@duane嗨,请检查我的编辑 –
你可以通过在绘制前设置'SpriteSortMode'来阻止这种情况发生 – dtsg