Witam
Mam problem z kolizją. Chce aby po dotknięciu graczem o obiekt lub w niego wejście pojawił się napis w konsoli "Kolizja!".
klasa Object:
class Object
{
public:
float width;
float height;
bool kolizja;
sf::Vector2f position;
sf::RectangleShape shape;
Object(float w, float h, float x, float y) : width(w), height(h), position(x,y), shape(sf::Vector2f(w,h)) {}
bool isColision(Object object);
void Colision();
};
int main:
int main()
{
sf::RenderWindow window(sf::VideoMode(800,600),"SFML Kolizja");
Object gracz = Object(60,130,100,460);
gracz.shape.setFillColor(sf::Color::Green);
gracz.shape.setPosition(gracz.position);
Object obiekt = Object(90,300,500,300);
obiekt.shape.setFillColor(sf::Color::White);
obiekt.shape.setPosition(obiekt.position);
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) window.close();
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::D) gracz.shape.move(10.f,0);
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::A) gracz.shape.move(-10.f,0);
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::W) gracz.shape.move(0.f,-10.f);
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::S) gracz.shape.move(0.f,10.f);
}
window.clear();
window.draw(obiekt.shape);
window.draw(gracz.shape);
gracz.isColision(obiekt);
gracz.Colision();
window.display();
}
return 0;
}
metody klasy Object :
bool Object::isColision(Object object)
{
if(position.x > object.position.x + object.width || position.x + width < object.position.x ||
position.y > object.position.y + object.height || position.y + height < object.position.y)
return kolizja=false ;
else return kolizja=true;
}
void Object::Colision()
{
if(kolizja == true) std::cout<<"Kolizja!"<<std::endl;
else {}
}
za każdą pomoc wielkie dzięki :]