Deo zbornika Teorija razvoja igara
Sudarni odgovor
Razrešenja sudara (collision resolution) ili sudarni odgovor (collision response) dolazi nakon što je sudar detektovan, u igrama koje simuliraju fiziku.
Odgovor na sudar dosta zavisi od mehanike igre. Raketa ispaljena na predmet treba da nanese štetu i eksplodira. Ali čist fizički odgovor je: dva pravougaonika se sudaraju i odbijaju.
Kod impulsnog rešavanja (impulse resolution) dodajemo trenutnu silu da bi se predmeti razdvojili, uzimajući u obzir masu, poziciju i brzinu tela.
Odbijanje vektora
Najprostiji sudar za modelovanje je sudar pokretnog i nepokretnog predmeta (npr. lopta udari u zid). Ovo se može rešiti refleksijom vektora - ugao pod kojim lopta ulazi jednak je uglu pod kojim izlazi.
Ako je zid uspravan, samo treba da obrnemo horizontalnu komponentu (x
) brzine lopte. Ako je zid vodoravan, samo treba da obrnemo vertikalnu komponente (y
) brzine lopte.
Primer u kodu
function axisAlignedCollision(vect, b) {
let newVect = { ...vect }
if (b === 'v') newVect.x *= -1
else if (b === 'h') newVect.y *= -1
return newVect
}
const vector = { x: 5, y: 10 }
console.log(axisAlignedCollision(vector, 'v'))
console.log(axisAlignedCollision(vector, 'h'))
Restitucija
Stvarni objekti nisu savršeno tvrdi, pa uvodimo koeficijent restitucije, koji modeluje elastičnost sudara.
Restitucija je količina odskoka koju predmet ima kada udari nešto. Na primer, koliko će lopta odskočiti kada je pustimo. Ako je restitucija 0.0f, ona će samo ostati na zemlji. Ako je vrednost 0.9f, loptica će dugo skakati.
Problem preklapanja
Pošto se predmeti u stvarnom životu retko preklapaju kao u računarskoj simulaciji, obično ćemo vratiti njihove pozicije tako da se samo dodiruju, a ne preklapaju.
Kod impulsnog rešavanja, ako impuls nije dovoljno veliki, predmeti će se ponovo sudariti nakon sledećeg ažuriranja. Ovo može prouzrokovati da objekti ostanu trajno zaglavljeni.
Ugaoni efekat
Sudarni odgovor za rotirajuće predmete je složeniji. Ne samo da se odbijaju, već njihova rotacija zavisi od tački sudara. Dodavanjem ugaonog efekata (angular effects) dobijamo realističniji sudarni odgovor za čvrsta tela.