U vezi kolizije pitanje.
Prikazujem rezultate 1 do 8 od 8

Tema: U vezi kolizije pitanje.

  1. #1
    Zainteresovan član
    Učlanjen
    23.08.2005.
    Poruke
    379
    Reputaciona moć
    48

    Podrazumevano U vezi kolizije pitanje.

    Hoću da pravim neku malu igricu i sad mi treba pomoć...
    Ja sam uvideo da za svaki objekat( lopta, kuća, čovek idr...) treba da napišem klasu jer je tako lakše da se "manipuliše" celim "sklopom", i mislim da u tome ne grešim.
    Npr. neka postoji jedna kuglica( koja pretstavlja igrača i igrač je može pomerati u svim smerovima), i dva pravougaonika koji pretstavljaju objekte različitih klasa( npr. kuće).
    Logično je da loptica ne sme da se kreće po tim kućama( odnosno pravougaonicima).
    Pored te 3 klase postoji i klasa koja pretstavlja "svet", odnosno u njoj se nalaze pomenuti objekti.

    E sad, ne znam kako da odredim da li je došlo do kolizije kuglice sa pravougaonicima.
    U prethodnoj maloj igri koju sam pravio ja sam objektu koji se kreće predavao kao argumente lokaciju pretmeta sa kojim može da se ostvari kolizija( sa samo jednim je mogla) ali sada ima previše predmeta sa kojim bi mogla da se sudari i sve deluje previše za'ebano...

    Palo mi na pamet da napravim dvodimenzionalni array tipa bool, ovako npr:
    Kod:
    bool slika[800][600];
    i da sada svako polje ovog arraya pretstavlja jedan piksel na ekranu( dakle rezolucija je 800x600) i sva su polja default postavljena na false. Ako bih npr. postavio jedan pixel na lokaciji recimo X = 100, Y = 200 onda bih podesio da bude :
    Kod:
    slika[100][200]  = true;
    Znači ako na datoj lokaciji postoji neki objekat onda to mogu da provalim preko ovog array-a i mogao bi da znam da li je došlo do kolizije ili ne. Pa jel bi valjalo da uradim ovako? Sigurno postoji neki bolji način...?
    Samo jedan klub--samo jedan grad---
    samo Z E T A bre
    kakav partizan



  2. #2
    Iskusan
    Učlanjen
    06.12.2004.
    Poruke
    5.596
    Reputaciona moć
    103

    Podrazumevano Re: U vezi kolizije pitanje.

    [font=Verdana]Ne razumem koja je razlika između jednog i više objekata? Negde imaš sigurno listu svih objekata i ne vidim šta je problem da jedan po jedan objekat šalješ objektu loptica da proveri da li je sa njim u koliziji ili ne. Znači već sve imaš napravljeno. Sem toga možeš da napraviš i metodu koja će prihvatati listu objekata u okviru klase loptica i onda će ta metoda da zove postojeću koja proverava za jedna objekat (koju već imaš).[/font]

  3. #3
    Poznat Garwor (avatar)
    Učlanjen
    27.04.2004.
    Pol
    muški
    Poruke
    7.152
    Reputaciona moć
    121

    Podrazumevano Re: U vezi kolizije pitanje.

    Bas kako Bojan kaze. Pamtis trenutne koordinate npr. centra svakog objekta u njemu samom, i dimenzije, i napravis metod za racunanje da li je doslo do kolizije i prosledis mu listu svih objekata.

  4. #4
    Zainteresovan član
    Učlanjen
    23.08.2005.
    Poruke
    379
    Reputaciona moć
    48

    Podrazumevano Re: U vezi kolizije pitanje.

    Hm... Ako imam recimo 50 objekata sa kojima loptica može da se sudari, i radim kako bojan kaže, trebalo bi 50 * 'broj loptica na ekranu' da zovem istu f-ju u toku svakog prolaza kroz "Game Loop"(negde sam prčitao da se tako zove "ona" beskonačna petlja koju sadrži skoro svaka igra :-) ), to deluje malo slow :-/

    OK, a jel ne valja ovo sa array-em što sam pomenuo gore?
    Samo jedan klub--samo jedan grad---
    samo Z E T A bre
    kakav partizan

  5. #5
    Iskusan
    Učlanjen
    06.12.2004.
    Poruke
    5.596
    Reputaciona moć
    103

    Podrazumevano Re: U vezi kolizije pitanje.

    [font=Verdana]Deluje ti da je sporo ili si probao pa je sporo. To nije isto. U svakom slučaju ne bi trebalo da budem problem da izmeriš koliko traje jedno pozivanje pomenute metode koja utvrđuje da li je došlo do kolizije ili ne, pa onda to pomnoži sa brojem objekata kako bi video koliko to traje za pomenutih 50 objekata.

    Ideja koju si predložio može da posluži ako ovo logično rešenje koje već imaš bude zaista presporo. U tom slučaju imaš još jedan objekat koji mora da se ažurira polse svake promene pozicije bilo kog elementa, tako da nisam siguran koliko je vremenska ušteda.

    Napravi prvo da radi, pa onda ubrzavaj... ukoliko je potrebno.
    [/font]

  6. #6
    Peruzzi nije na forumu
    је дошао тихо и ушао у легенду...
    Domaćin Peruzzi (avatar)
    Učlanjen
    03.08.2003.
    Pol
    muški
    Lokacija
    Shumadija
    Poruke
    3.924
    Reputaciona moć
    92

    Podrazumevano Re: U vezi kolizije pitanje.

    ma nije sporo,cini ti se. cak mislim da bi ovo sa nizom bilo jos sporije (ako sam lepo shvatio ideju)


  7. #7
    Poznat Garwor (avatar)
    Učlanjen
    27.04.2004.
    Pol
    muški
    Poruke
    7.152
    Reputaciona moć
    121

    Podrazumevano Re: U vezi kolizije pitanje.

    ovo sa nizom...ne bacaj toliku memoriju ! Neka svaki piksel bude jedan bit pa slazi u bajtove.Tako si dobio odredjene blokove od po 1x8 piksela. A onih 800 je u stvari 100 polja sa bajtom. Kuglicinu x koordinatu isto tako podeli sa 8 i uradi OR blokova 'kuglice' sa blokovima sveta na kojima se ona nalazi (ovo ces lako izracunati). A 'kuglicu' isto tako smesti kao niz bitova, tj.blokova, da bi lakse radio OR:

    00111100
    01111110
    11111111
    11111111
    11111111
    11111111
    01111110
    00111100
    (nesto takvo, samo vece)

    A kad treba da se proveri, uradis prvo shift levo/desno (sa dodavanjem keca ili nule s kraja, kako gde) zavisno od kretanja kugle za po x mod 8, pa OR-ujes samo one blokove koji pokrivaju spoljnu ivicu kugle...opet ces imati znatan broj operacija (zavisi od dimenzija kuglice) ali ce ove valjda biti brze

  8. #8
    Zainteresovan član
    Učlanjen
    23.08.2005.
    Poruke
    379
    Reputaciona moć
    48

    Podrazumevano Re: U vezi kolizije pitanje.

    Hvala ljudi
    Samo jedan klub--samo jedan grad---
    samo Z E T A bre
    kakav partizan

Slične teme

  1. Pitanje u vezi UPS-a
    Autor ppeecca u forumu Hardver
    Odgovora: 4
    Poslednja poruka: 03.12.2007., 19:34
  2. Pitanje u vezi MP3
    Autor Johnny Ramone u forumu Softver
    Odgovora: 7
    Poslednja poruka: 08.04.2006., 04:19
  3. Pitanje u vezi C++ -a
    Autor ModProbe u forumu Programiranje
    Odgovora: 2
    Poslednja poruka: 03.09.2004., 12:53
  4. pitanje u vezi sa HDD-om
    Autor sjjajj u forumu Softver
    Odgovora: 4
    Poslednja poruka: 28.12.2003., 16:13

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •