De Retour
yo tout le monde après une semaine de script intense sur "aseba sthudio",
je me suis remis sur le projet,(certins amis m'avaient conseillé de faire plusieurs test de collision en même temps, ajouter "des murs")
bref je me suis remis a créer un porjet, animer, remettre emplace mon fameux "rect" en signe de mur,
aucun problème mon personnage et stopé par la collision quand t'il va contre le mur...
*Je recrée un "mur" qui s'appelle "rect2"*
et cette fois le personnage ne sârrette par quand t'il est dans un des murs, j'ai donc r'ajouter :
else
{
std::cout << "collision" << std::endl;
}
Quand mon personnage entre en collision le message "collision" s'affiche bien mais il ne s'arrête toujours plus,
mon compilateur ne détecte aucun bug, et normalement cela devrais fonctionner
Pour test, j'ai ajouter :
{
std::cout << "collision" << std::endl;
collision = false;
}
if(collision != false)
{
sprite_perso.move(mouvement);
}
}
ça marche mais qu'avec un(que si je supprime un des rect) sinon rien ne se passe, comme en haut..
Voici La gestion des collision :
void gestion_PersoCollision()
{
sf::Vector2f mouvement(0,0);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
mouvement.y -= speed;
anim.y = Up;
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
mouvement.y += speed;
anim.y = Down;
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
mouvement.x += speed;
anim.y = Right;
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
mouvement.x -= speed;
anim.y = Left;
}
sf::FloatRect test(sprite_perso.getPosition().x + mouvement.x,
sprite_perso.getPosition().y + mouvement.y,
sprite_perso.getGlobalBounds().height,
sprite_perso.getGlobalBounds().width);
if(!test.intersects(rect.getGlobalBounds()))
{
collision = true;
}
else
{
std::cout << "collision" << std::endl;
collision = false;
}
if(!test.intersects(rect2.getGlobalBounds()))
{
collision = true;
}
else
{
std::cout << "collision" << std::endl;
collision = false;
}
if(collision != false)
{
sprite_perso.move(mouvement);
}
}
Que devrais-je faire pour enlevé ce bug plutôt ennuyeux?