Okej sprawdzanie bounding boxów znajduje się teraz w pętli aplikacji(kod poniżej). Mam natomiast kilka pytań odnośnie tego kodu ;) :
1.Jak mógłbym usunąć obiekt gracz _02 przy użyciu kolizji ?
2.Mam kilka pytań odnośnie konstruktorów które użyłem we sfml(przez 2 pytanie nie moge jakoś też wypróbować wskaźnikowego sposobu usuwania obiektu) jakoś dziwie się że wcześniej to ominołem ale czemu Konstruktory wiedząc z lekcji od pana mirosława mają swoje nazwy dowolne(wtf ;/) a nie tylko takie jakie definiuje klasa. Czyli czemu:
sf::RectangleShape gracz_02(sf::Vector2f(20, 50));
a nie :
sf::RectangleShape(sf::Vector2f(20,50));
Nie wiem tylko jak by się miało później do takiego obiektu odwoływać :P Ale mimo wszystko prosze o wyjaśnienie !
#include <SFML/Graphics.hpp>
#include<iostream>
using namespace std;
int main()
{
unsigned int licznikKolizji=0;
sf::RenderWindow oknoAplikacji(sf::VideoMode(800, 600), "Okno!");
sf::RectangleShape gracz(sf::Vector2f(50, 100));
sf::RectangleShape gracz_02(sf::Vector2f(20, 50));
while(oknoAplikacji.isOpen())
{
sf::Event zdarzenie;
while(oknoAplikacji.pollEvent(zdarzenie))
{
if( zdarzenie.type == sf::Event::Closed )
oknoAplikacji.close();
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
gracz.move(0, -1);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
gracz.move(0, 1);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
gracz.move(-1, 0);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
gracz.move(1, 0);
gracz_02.setPosition( 200, 100 );
sf::FloatRect boundingBox = gracz.getGlobalBounds();
sf::FloatRect boundingBox_02 = gracz_02.getGlobalBounds();
if (boundingBox.intersects(boundingBox_02))
{
++licznikKolizji;
if (licznikKolizji==1)
{
cout<<"Kolizjaaa !!!!!!!"<<endl;
}
}
oknoAplikacji.clear();
oknoAplikacji.draw(gracz);
oknoAplikacji.draw(gracz_02);
oknoAplikacji.display();
}
return 0;
}