我目前使用2D数组绘制了瓷砖地图,并且我的角色也在移动和绘制。
我现在试图解决碰撞方面的问题,我希望将玩家位置引用到瓷砖地图坐标上,如果它们相等则执行必要的碰撞操作。
但是我试图将玩家位置矢量与2D阵列进行比较,并且我不断收到错误,例如"Cannot implicitly convert int to bool"
我想知道是否有人可以帮我解决这个需要检查的情况。
产生编译错误的代码是if(player.Position == Tiles.Map[(int)player.Position.X, (int)playerPosition.Y])
以下是我绘制地图的方式:
public int[,] Map = new int[,]
{
{0,0,0,1,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,1,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,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
public void Draw(SpriteBatch spriteBatch)
{
int tileMapWidth = Map.GetLength(1);
int tileMapHeight = Map.GetLength(0);
for (int x = 0; x < tileMapWidth; x++)
{
for (int y = 0; y < tileMapHeight; y++)
{
int textureIndex = Map[y, x];
Texture2D texture = tileTextures[textureIndex];
spriteBatch.Draw(
texture,
source = new Rectangle(x * myTile.Width,
y * myTile.Height,
tileWidth,
tileHeight),
Color.White);
}
}
}
答案 0 :(得分:0)
你试图将玩家位置与整数数组进行比较,但你想要的是检查数组是否有一个&#34; 1&#34;作为玩家位置的价值。
更改
if(player.Position == Tiles.Map[(int)player.Position.X, (int)playerPosition.Y])
要
if(Tiles.Map[(int)player.Position.X, (int)playerPosition.Y] == 1)
否则,如果你知道地图的具体位置(让我们称之为X和Y),那么阵列根本就不涉及,它应该是这样的:
if((int)player.Position.X == X && (int)playerPosition.Y == Y)