Cześć,
piszę grę w XNA i natknąłem się na problem którego nie potrafię rozwiązać.
Mianowicie chodzi o kolizję z budynkami.
W game1 tworzę listę tych budynków, a później w Player w foreach sprawdzam kolizję z nimi, i jeśli jest to zeruje speed i nie daje się wykonywać instrukcją przy wciskaniu klawiszy.
//W Postaci
foreach (Budynek b in Game1.listbudynk)
{
if (top.Intersects(b.kwadrat))
{
kolizjaGora = true;
speed.Y = 0;
}
else
kolizjaGora=false;
if (bot.Intersects(b.kwadrat))
{
kolizjaDol = true;
speed.Y = 0;
}
else
kolizjaDol = false;
if (left.Intersects(b.kwadrat))
{
kolizjaLewa = true;
speed.X = 0;
}
else
kolizjaLewa = false;
if (right.Intersects(b.kwadrat))
{
kolizjaPrawa = true;
speed.X = 0;
}
else
kolizjaPrawa = false;
}
//Przykladowy ruch
if (kolizjaLewa == false)
{
if (kb.IsKeyDown(Keys.A))
{
if (speed.X >= -3)
speed.X += -1;
}
else
{
if (speed.X < 0)
speed.X += 1;
}
}
top,bot itd, to prostokaty 1x1 po srodku kazdego boku tekstury postaci.
Lista z budynkami robi się w inicjalizacji w Game1.
Po uruchomieniu wygląda to tak że wszystko dobrze działa tylko dla ostatniego elementu listy, czyli dla budynku który stworzyłem ostatni. Dla całej reszty przy kolizji postać zwalnia do 1 i przechodzi przez budynek.
Nie wiem jak to możliwe.
Pomocy!