Autor Wątek: Wykrycie kolizji w 2D  (Przeczytany 2658 razy)

Offline AS

  • Użytkownik
    • Homepage

# Wrzesień 13, 2010, 20:59:13
Jakby co, w oryginale mam:
Kod: (javascript) [Zaznacz]
for(i=1; i <= enemies; ++i){ // i dla kazdego czerwonego kloca. BTW. petla for(i in enemyArray) byla ok. 3 razy wolniejsza!             
    red_left = enemyArray[i]['left'];
    red_top  = enemyArray[i]['top'];
    if( sx >= red_left + left  && // sprawdza czy sie z jakims zderzylismy?
        sx <= red_left + right &&
        sy >= red_top  + down  &&
        sy <= red_top  + up )   
    {           
        (...) // jak tak to koniec gry                       
    }
    (...) // z tym czerwonym sie nie zderzylismy. to poruszamy nim. sprawdzamy czy sie nie odbija wlasnie od sciany       
    enemy = enemy.nextSibling // i jak najszybciej skaczemy do nastepnego czerwonego
}
I wydaje mi się, że to to samo, bo jeśli np. pierwszy warunek sx >= red_left + left nie zostanie spełniony, to już dalsze sprawdzanie zostanie przerwane, ze względu na operator &&. Tak jest w C, zakładam, że w JS też, choć nie jestem tego do końca pewny. Niestety to wciąż liniówka...

// Hell yeah, 100 post.
« Ostatnia zmiana: Wrzesień 13, 2010, 21:01:50 wysłana przez AS »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline yorp

  • Użytkownik
    • ProfessionGG Project

# Wrzesień 15, 2010, 20:57:47
na mysli maksymalny skok mialem na mysli podzielenie ruchu na kilka odcinkow ruchu (maksymalne przeusniecie) zeby promien zbierania nie byl za duzy, co z tego ze ktos sie przesunie o caly ekran jak podzielisz ruch na 10 krokow.
Oczywiscie zakladajac pesymistyczne zdarzenie zlapiesz wszystkie mozliwe kolizje, ale jest to raczej malo prawdopodobne - prawdopodobnie zakonczysz ruch juz po pierwszym odcinku po podziale, dlatego tez uwazam, ze powinno Ci wystarczyc.