Buenas,
Intenté hacer la función más o menos como me guiaste y por parte funciona pero no del todo me quedé un poco atrapado, al igual al intentar hacerlo probé otra cosa que me da el mismo resultado.
Aquí un previo vídeo: https://www.youtube.com/watch?v=KOVwKT6rf54
Sería aquí las modificaciones:
Código C++:
Ver originalsf::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);
}
}
De tu forma me da un resultado similar, pero me quede un poco atrapado y no se como seguirla, y pues para no darte más trabajo pues probé algo así que me dio dicho resultado, pero como se ve en el vídeo solo responde a 'x' a la 'y' no responde y si se intenta pues al colisionar se va moviendo la figura en vez de quedarse quieta sin poder avanzar más ya que colisionó.
Gracias.
Saludos!
-------------------------------------------------------------------------------------------------
#ACTUALIZACIÓN
-------------------------------------------------------------------------------------------------
Probé a cambiar .left por .top pero igual el mismo problema.
Código C++:
Ver originalsf::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.top){
rec.setPosition(rec.getPosition().x, rec.getPosition().y-1);
}
if(rec.getPosition().y>=rect2.top){
rec.setPosition(rec.getPosition().x, rec.getPosition().y+1);
}
}
- Tal vez sea mejor de tu forma con la función pero me quedé un poco pillado a la hora de cambiar el valor del array.
Gracias.
Saludos!