Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolizja dwóch prostokątów dostaje kaprysy

Ostatnio zmodyfikowano 2012-09-13 19:45
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Kolizja dwóch prostokątów dostaje kaprysy
» 2012-09-13 17:46:17
Witam was serdecznie, otóż do sprawdzania kolizji używam funkcji easykodera(to prosta funkcja, więc chyba moge jej użyć). No i problem jest z kaprysami. Raz działa, a raz nie. Oto wyjaśnienie. Do przechowywaniu obiektu pocisków oraz przeciwników używam kontenera vector. Podczas rysowania przeciwników, sprawdzam, czy przypadkiem nie działa na niego kolizja, jeżeli tak, to wtedy jego obiekt jest kasowany z kontenera. No i funkcja raz działa, a raz nie, dostaje takich kaprysów. O co chodzi? Oto cały kod rysowania i sprawdzania kolizji:
C/C++
for( unsigned int i = 0; i < enemy.size(); ++i )
{
    if( enemy[ i ].returnLives() < 1 ) //Jezeli życia mniejsze od 1, to kasujemy przeciwnika i pomijamy obieg pętli
    {
        enemy.erase( enemy.begin() + i );
        continue;
    }
    for( int j = 0; j < pocisk.size(); ++j )
    {
       
        if( kolizja( pocisk[ j ].x, pocisk[ j ].y, 15, 11, enemy[ i ].x, enemy[ i ].y, 70, 20 ) )
        {
            enemy[ i ].SubLive();
            pocisk.erase( pocisk.begin() + j );
        }
    }
    enemy[ i ].DrawEnemy( bitmap );
}
P-64876
DejaVu
» 2012-09-13 19:40:30
Milion razy było napisane, że ta funkcja jest zła i na forum pół miliona razy została podana poprawna funkcja do wykrywania kolizji.
P-64889
bingo009
Temat założony przez niniejszego użytkownika
» 2012-09-13 19:45:12
Funkcja zła? O to bardzo przepraszam, nie wiedziałem. Myślałem, że do tak głupiej kolizji wystarczy. Dobra, poszukam na forum, zamykam.

Edit: Nie chciałem wszystkiego kopiować, więc sam napisałem kolizję. Może bardzo dokładna to ona nie jest, ale na potrzeby gry starczy. Problem rozwiązany, zamykam.
P-64891
« 1 »
  Strona 1 z 1