SFML Kolizje

0

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.

0

Może jakiś głupi jestem, ale o co ***** chodzi 0_o? Jakich kolizji, jaki temat młodego?

0

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:

  1. Na wysokości Player1_x;
  2. Na szerokości Player1_y;
  3. Na wysokości Końca;
  4. 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
0

Na wiki od SFML jest kod do detekcji kolizji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1