Ich habe meine Kachelkarte und meinen Player mit Bewegung erstellt.Tilemap Index außerhalb der Grenzen Kollision
Ich versuche jetzt, die Kollision zu schaffen, und ich fühle mich auf dem richtigen Weg.
Hier ist, wie ich die Karte erstellt habe.
List<Texture2D> tileTextures = new List<Texture2D>();
int tileWidth = 60;
int tileHeight = 60;
public int[,] Map = new int[,]
{
{2,2,2,2,2,2,2,2,2,2},
{2,2,2,2,1,2,2,2,2,2},
{2,2,2,2,2,2,2,2,2,2},
{2,2,2,2,2,2,2,2,2,2},
};
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 bin Überprüfung des 2D-Array coords mit dieser Bedingung und zu überprüfen, ob eine bestimmte Kachel ist, wo ich dann meine vorherige Position gesetzt, wenn es wahr ist.
Ich teste gerade auf 1 Kachel ATM.
public void Update(GameTime gameTime)
{
prevPosition = position;
input(gameTime);
if(tiles.Map[(int)playerPosition.X/60,(int)playerPosition.Y/60] == 1)
{
position = prevPosition;
}
}
aber meine Spieler Position hält aus den Indexgrenzen des 2D-Arrays gehen und ich glaube, ich brauche es zu verkleinern, so dass es diese stoppt, ich habe versucht, durch die Breite der die Spiel coords Dividieren Fliesen aber das hat nicht funktioniert.
Wenn mir jemand mit der richtigen Skalierung helfen kann, wäre ich sehr dankbar.
Haben Sie überprüft, welche Werte Sie bekommen, wenn Sie dies versuchen? Auch deine Karte ist nicht 60x60, es ist 4x10, was ein Problem verursachen könnte, wenn du versuchst, deinen Player dort zu positionieren. –
Nein, ich habe nicht überprüft, dass ich neu bin und nicht sicher bin, wie ich das überprüfen soll. Ich habe auch versucht, durch 10 und 4 zu teilen, und ich bekomme das gleiche Problem. Irgendwelche Ideen? – Spoingen
googeln und lernen, wie man den Debugger für Visual Studio und das unmittelbare Fenster verwendet. Eine Menge Entwicklungssoftware versucht herauszufinden, warum etwas etwas Unerwartetes getan hat. –