Estuve probando y tal pero a vece me da distintos resultados que intento buscar,
Tal vez pueda ser un error de concepto ¿no?
Código completo:
Código C++:
Ver original#include <SFML/Graphics.hpp>
#include <iostream>
void comprobarIntersecta();
int main(){
//Creamos la ventana
sf::RenderWindow window(sf::VideoMode(800, 600), "Colision");
//Rectangualo
sf::RectangleShape rec(sf::Vector2f(50, 50));
rec.setFillColor(sf::Color::Cyan);
//Otro rectangulo
sf::RectangleShape rec2(sf::Vector2f(50, 50));
rec2.setFillColor(sf::Color::Magenta);
rec2.setPosition(400, 300);
window.setFramerateLimit(200);
//Si la ventana está abierta
while(window.isOpen()){
//Creamos un evento
sf::Event ventana;
//Llamamos a los eventos
while(window.pollEvent(ventana)){
//Cerramos la ventana cuando se solicite
if(ventana.type == sf::Event::Closed){
window.close();
}
}
//Colisiones ventana bordes
if(rec.getPosition().x<0){
rec.setPosition(0, rec.getPosition().y);
}
if(rec.getPosition().x>750){
rec.setPosition(750, rec.getPosition().y);
}
if(rec.getPosition().y<0){
rec.setPosition(rec.getPosition().x, 0);
}
if(rec.getPosition().y>550){
rec.setPosition(rec.getPosition().x, 550);
}
sf::FloatRect rect = rec.getGlobalBounds();
sf::FloatRect rect2 = rec2.getGlobalBounds();
bool chocar [4] = {false,false,false,false}; //Norte, sur, este y oeste
if(rect.intersects(rect2)){
comprobarIntersecta();
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
if(!chocar[0])
rec.move(0, -1);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)){
if(!chocar[1])
rec.move(0, 1);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
if(!chocar[2])
rec.move(-1, 0);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
if(!chocar[3])
rec.move(1, 0);
}
//Limpiamos ventana
window.clear();
//Dibujamos el rectangulo
window.draw(rec);
window.draw(rec2);
//Actualizamos ventana
window.display();
}
}
void comprobarIntersecta(){
sf::RectangleShape rec(sf::Vector2f(50, 50));
rec.setFillColor(sf::Color::Cyan);
if(rec.getPosition().x<400){
chocar[0] = true;
}
}
Hay está todo para verificar si tal vez es de concepto.
Gracias por las respuestas aportadas. Saludos!