Mam mały problem z aktualizacją trasy poruszania się obiektu w XNA 4.0. Problem polega na tym, że mam obiekt, który ma się poruszać w lewo i prawo o określoną odległość. Jeżeli dojdzie do miejsca X to zmienia kierunek i idzie w drugą stronę, aż nie dojdzie do drugiego punktu. Obecnie jednak gdy dojdzie do punktu zamiast zmienić kierunek na przeciwny zaczyna się krzaczyć. Tutaj wizualizacja problemu:
Obecnie zmiana kierunku jest ustawiona gdy napotka na obiekt (cegiełka w tym przypadku). Kod odpowiedzialny za poruszanie się obiektu:
private void UpdateMovement(GameTime theGameTime, List<Brick> mBrick)
{
foreach (Brick brick in mBrick)
{
if (this.CollisionBox.Intersects(brick.element.CollisionBox) == true)
{
mDirection.X = MOVE_LEFT;
}
else
{
mSpeed.X = MONSTER_SPEED;
mDirection.X = MOVE_RIGHT;
}
}
Position += mDirection * mSpeed * (float)theGameTime.ElapsedGameTime.TotalSeconds;
}
Widzę w kodzie, że błąd jest jak na patelni ponieważ sprawdzam czy obiekt koliduje z drugim. Jeżeli tak to zmieniam kierunek, obiekt jednak przestaje od razu kolidować i znowu zaczyna iść w prawo. Nie mogę jednak dojść do rozwiązania tego problemu.