Witam szukając tu przykładów trafiłem na temat "Młodego" o wyświetlaniu zmiennej na ekranie. Mój problem jest taki ze nie wiem jak wykrywać kolizje. Poprosiłbym o jakiś kod.
Może jakiś głupi jestem, ale o co ***** chodzi 0_o? Jakich kolizji, jaki temat młodego?
Temat też w tym dziale autor miał nick : "Młody". Kolizji z obiektami. Np Pozycja X Obrazka to ObrazekX.GetPosition().x; Y to ObrazekY.GetPosition().y; i teraz jak to sprawdzić z np takimi współrzędnymi. 100, 100, 100, 100, (x, y, szerokość, wysokość). Tak właśnie myślę ze wysokość i szerokość tez się przydadzą. A Obrazek ma wysokość i szerokość równą 100. Znalazłem taką funkcje:
bool kolizja(float x1,float y1,float s1,float w1,float x2,float y2,float s2,float w2)
{
if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else
if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true;
else
return false;
}
A wywołanie:
if (kolizja(Player1_x, Player1_y, 32, 32, Koniec1_x, Koniec1_y, 10, 10) == true)
{
// Kolizja
}
Objaśnienia, funkcja przyjmuję x, y, szerokość, wysokość pierwszego obrazka. oraz x, y, szerokość, wysokość drugiego obrazka. Z tym ze nie działa tak jak się spodziewałem, Kolizja jest tylko w tych miejscach:
- Na wysokości Player1_x;
- Na szerokości Player1_y;
- Na wysokości Końca;
- Na szerokości Końca;
Z tym ze szerokości = X;
Wysokości = Y;
A nie działa na całej szerokości którą podaje. Tu nas bardziej interesuje: float x2,float y2,float s2,float w2. Jakieś pomysły?
;D
Temat(wyszukałem): http://4programmers.net/Forum/C_i_C++/172436-sfml_wyswietlanie_zmiennej
PS. Nie zdążyłem
Na wiki od SFML jest kod do detekcji kolizji.