Ich habe derzeit meine Kachelkarte mit einem 2D-Array gezeichnet und mein Charakter bewegt und gezeichnet auch.Player Kollision mit 2D-Array Tilemap
Ich versuche jetzt, die Kollisionsseite von diesem zu sortieren, ich schaue, um die Spielerposition auf die Kachelkartenkoordinaten zu beziehen, und wenn sie gleich sind, führen Sie die notwendigen Aktionen für die Kollision durch.
Jedoch hat ich den Spielerpositionsvektor zu der 2D-Array zu vergleichen versucht habe, und ich erhalte immer Fehler wie "Cannot implicitly convert int to bool"
ich mich gefragt, ob mir jemand mit dieser Krankheit helfen könnte, die ich überprüfen müssen. Der Code, der die Kompilierung-Fehler liefert, ist if(player.Position == Tiles.Map[(int)player.Position.X, (int)playerPosition.Y])
Hier ist, wie ich meine Karte gezeichnet habe:
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);
}
}
}
'Ich fragte mich, ob jemand mir mit dieser Bedingung helfen könnte, die ich überprüfen muss. Gut, ohne den Kabeljau zu sehen Wenn Sie die Kollision überprüfen, kann Ihnen niemand helfen. Wenn dein Problem in einer konkreten Funktion ist, schreibe nicht eine nicht verwandte, wenn du mit einem Beinschmerz zum Arzt gehst, zeigst du ihm keine Hand, zeigst du das Bein, stimmt's? – Gusman
Ich erklärte oben, dass ich die Player-Position mit dem 2d-Array [x, y] überprüfen möchte. Aber mein Problem war "Kann Int nicht implizit in Bool konvertieren". Ohne dass die Bedingung erfüllt oder erfüllt ist, ist der Kollisionscode redundant. Der Zustand war ich versucht: if (player.Position == Tiles.Map [(int) player.Position.X, (int) playerPosition.Y]) Dies ist, wo mein Problem ist, ich bin nicht sicher, wie man diese Bedingung korrekt schreibt. – Spoingen
Nein, ist nicht redundant, da wir nicht sehen können, warum Sie diese Ausnahme bekommen. – Gusman