#ACTUALIZACIÓN
Acabo de probar otra forma que da resultado por una parte, pero por la otra no.
Si voy de izquierda a derecha colisiona y no puede avanzar "bien", si voy de derecha a izquierda colisiona y no puede avanzar "bien", eso si quitamos la colisión de "y". Y si añado la colisión de "y" se desplaza el rectángulo a los lados como se ve al principio del siguiente vídeo:
[youtube=640,360]https://www.youtube.com/watch?v=KOVwKT6rf54[/youtube]
Código al que hago referencia en el vídeo:
Por una parte parece que funciona:
Ya que colisionan y no pueden avanzar bien, eso si están solo estas funciones.
Si añado las demás funciones que hace referencia a "y" ya al colisionar se desplaza solo.
Saludos!
Acabo de probar otra forma que da resultado por una parte, pero por la otra no.
Si voy de izquierda a derecha colisiona y no puede avanzar "bien", si voy de derecha a izquierda colisiona y no puede avanzar "bien", eso si quitamos la colisión de "y". Y si añado la colisión de "y" se desplaza el rectángulo a los lados como se ve al principio del siguiente vídeo:
[youtube=640,360]https://www.youtube.com/watch?v=KOVwKT6rf54[/youtube]
Código al que hago referencia en el vídeo:
Código (cpp) [Seleccionar]
sf::FloatRect rect = rec.getGlobalBounds();
sf::FloatRect rect2 = rec2.getGlobalBounds();
if(rect.intersects(rect2)){
if(rec.getPosition().x<=rect2.left){
rec.setPosition(rec.getPosition().x-1, rec.getPosition().y);
}
if(rec.getPosition().x>=rect2.left){
rec.setPosition(rec.getPosition().x+1, rec.getPosition().y);
}
if(rec.getPosition().y<=rect2.left){
rec.setPosition(rec.getPosition().x, rec.getPosition().y-1);
}
if(rec.getPosition().y>=rect2.left){
rec.setPosition(rec.getPosition().x, rec.getPosition().y+1);
}
}
Por una parte parece que funciona:
Código (cpp) [Seleccionar]
if(rec.getPosition().x<=rect2.left){
rec.setPosition(rec.getPosition().x-1, rec.getPosition().y);
}
if(rec.getPosition().x>=rect2.left){
rec.setPosition(rec.getPosition().x+1, rec.getPosition().y);
}
Ya que colisionan y no pueden avanzar bien, eso si están solo estas funciones.
Si añado las demás funciones que hace referencia a "y" ya al colisionar se desplaza solo.
Código (cpp) [Seleccionar]
f(rec.getPosition().x<=rect2.left){
rec.setPosition(rec.getPosition().x-1, rec.getPosition().y);
}
if(rec.getPosition().x>=rect2.left){
rec.setPosition(rec.getPosition().x+1, rec.getPosition().y);
}
if(rec.getPosition().y<=rect2.left){
rec.setPosition(rec.getPosition().x, rec.getPosition().y-1);
}
if(rec.getPosition().y>=rect2.left){
rec.setPosition(rec.getPosition().x, rec.getPosition().y+1);
}
Saludos!