Lorsque mon perso avance vers le mur par exemple il touche le mur , il y a collision , mais comme il est toujour en contact il ne peux plus bouger du tout , je n'arrive pas à résoudre ce probleme :protected override void Update(GameTime gameTime)
{
MouseState mouse = Mouse.GetState();
KeyboardState state = Keyboard.GetState();
if (state.IsKeyDown(Keys.Z))
{
Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y, 24, 28);
bool collide = false;
if (Heroposition.Y >= 0)
{
if (newHitbox.Intersects(Arbrepostion))
{
collide = true;
}
if(!collide)
Heroposition.Y -= Speed;
}
direction = Direction.Haut;
}
else if (state.IsKeyDown(Keys.S))
{
Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y , 24, 28);
bool collide = false;
if (Heroposition.Y < (screenHeight - 28))
{
if (newHitbox.Intersects(Arbrepostion))
{
collide = true;
}
if (!collide)
Heroposition.Y += Speed;
}
direction = Direction.Bas;
}
else if (state.IsKeyDown(Keys.Q))
{
Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y, 24, 28);
bool collide = false;
if (Heroposition.X > 0)
{
if (newHitbox.Intersects(Arbrepostion))
{
collide = true;
}
if (!collide)
Heroposition.X -= Speed;
}
direction = Direction.Gauche;
}
else if (state.IsKeyDown(Keys.D))
{
Rectangle newHitbox = new Rectangle(Heroposition.X, Heroposition.Y, 24, 28);
bool collide = false;
if (Heroposition.X < (800 - 166))
{
if (newHitbox.Intersects(Arbrepostion))
{
collide = true;
}
if (!collide)
Heroposition.X+=Speed;
}
direction = Direction.Droite;
}
}
Je tiens à précisé que les if (heroposion. sont juste pour que le perso ne sorte pas de l'écran , aucun rapport avec le truc des collisions
tu fait un truc genre tu save la position du hero avant la colision
lastx = Heroposition.X
lasty = Heroposition.Y
et si il y'a collision gauche ou droite : Heroposition.X = lastx
collision haut ou bas : Heroposition.Y = lasty
Ton personnage a-t-il une animation ?
Si oui, c'est parce que lorsque il est en contact avec ton mur, puis que tu retournes en arrière, il doit y avoir un pixel qui gêne et qui est dana le mur.
Animation ou pas la collision est fait avec la fonction rectangle.intersect donc aucun rapport si je regarde le code le problème est plutôt situé dans le fait que le personnage avance dans l'objet il y'a collision mais il reste dans l'objet donc il y'a toujours collision... il faut donc faire reculé l'objet au moment de la collision pour qu'au prochaine frame l'objet re avance et ce fasse repoussé encore et encore infiniment pour ne pas qu'il sois toujours en collision