Avatar billede onkel_satan Nybegynder
25. september 2006 - 21:12 Der er 7 kommentarer og
1 løsning

Råd til collision detection

Har et lille problem angående kollision detektion. Problemet laegger i at jeg udregner mine objekters position til tiden t, ud fra en start vektor som angiver start hasitgheden og retningen. Idet at der er acceleration i y retningen (vi bevaeger os i et plan) vil y koordinatets vaekst oeges jo hurtigere objektet bevaeger sig. Dette giver så problemer naar jeg skal detektere en kollision mellem f.eks. en bold og et gulv, da tiden er hel tal og hoejst sandsynligt ikke passer med at bolden rammer gulvet til tiden lig med et helt tal.
Så kunne man jo regne ud til hvilken tid de kollidere og saa bruge resultatet som den sidste tid inden kollision, så man får bolden helt med og ramme gulvet. Men saa kommer naeste problem, hvad med kollision mellem bolden og et spiller kontrolleret objekt. Der kan jeg ikke regne kollisions tiden ud på forhånd da man ikke ved hvordan spiller objektet kommer til at bevaege sig.

Nogen råd til denne problem stilling ?
Avatar billede roenving Novice
26. september 2006 - 00:03 #1
Du må vel kontrollere objekternes position løbende ?-)
Avatar billede onkel_satan Nybegynder
26. september 2006 - 00:14 #2
Goer jeg også, udregner boldens position til tide t. Men som sagt resultere dette i afstanden mellem de loebende posistioner bliver stoerrer med tiden t da bolden påvirkes af en tyngde acceleration. Problemet kan måske bedst illustreres med et ekspempel.
Gulvets y-koordinat lögger måske på y = 300
Til tiden t=22 er boldens y-koordinat maaske 291 men til den naeste tid t=23 er den måske 308. Derved har bolden allerede begravet sig halvvejs igennem gulvet. Vaelger jeg at stoppe den til tiden t=22 vil bolden aldrig komme til at ramme gulvet.
Avatar billede roenving Novice
26. september 2006 - 12:51 #3
Så er du nødt til at forudse, at bolden indenfor næste timeslice rammer gulvet og på forhånd regne ud præcist hvornår det sker, og så sætte bouncingen igang !-)
Avatar billede onkel_satan Nybegynder
26. september 2006 - 15:25 #4
Yep problemet er bare at det er lidt svaert at goere med spiller styret objekter da den aldrig kan vide hvor de er.
Avatar billede roenving Novice
27. september 2006 - 13:15 #5
Så må du simpelthen have timeslices, der er så små, at der ikke kan komme overraskelser den vej !-)
Avatar billede onkel_satan Nybegynder
27. september 2006 - 16:42 #6
Yep, det var også hvad det endte op med. Added så endnu en funktion der ved kollision beregnede kollisions vinklen. Med denne vinkel og min. afstanden mellem de to objekter kan jeg så udregne det rigtige koordinat saet ved impact saa de ikke kommer til at over lappe hinanden.
Eller sagt på en anden måde:
1) Udregner en ny position for objekterne
2) Kollision ? hvis ja, så tilpas positionen fra step 1 saa de ikke overlapper.
3) Tegn

Smid et svar for point. Skylder dig også lidt point fra et gammelt spoergsmål som jeg lukkede den anden dag.
Avatar billede roenving Novice
28. september 2006 - 11:09 #7
Velbekomme '-)
Avatar billede roenving Novice
05. oktober 2006 - 04:18 #8
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester