Mam tę grę typu „Breakeout”.
Na środku mam armatę, bloki wokół armaty i podkładki wokół bloków. Tak wygląda gra:
Udało mi się uzyskać zderzenie na piksel, a moja kula „ odbija ” się w kontakcie z blokami o następującej matematyce:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
Gdzie niebieska linia jest kierunkiem kuli, a czarna linia (linia bazowa) jest powierzchnią bloku.
Kierunek to kąt wyrażony w radianach (który oczywiście można przeliczyć na stopnie).
Piłka jest poruszana przez:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
Na razie w porządku.
Mój problem przychodzi teraz z padem (3 ciemne i duże bloki wokół małych kolorowych klocków).
Gdy się odwracają, zmienia się kąt powierzchni.
Co więcej, piłka powinna również uderzać w boki, więc jak mogę zmierzyć kierunek uderzenia i nowy kierunek ruchu piłki?
ps : W razie potrzeby mogę podać kod i plik SWF do gry.
Edytować
Ok problem z kątami został rozwiązany za pomocą wektorów , ale nadal mam problem z kolizją boków i pleców.
Otworzę kolejne pytanie i link tutaj.