jabberjab Skrevet 13. januar 2008 Skrevet 13. januar 2008 (endret) Heisann. Jeg holder på med å programmere en simpel 2D-shooter ved hjelp av d3d, kulene avfyres kun i y-retning, x-posisjon er bestemt av avfyringsposisjonen til spilleren. Uansett, min klassestruktur er som følger; Syklusen er; GameLoop -> GameInput -> GameLogic -> GameRender -> Window::MessageQ() -> GameLoop GameInput inneholder en struct som setter game-events til true eller false, f.eks. ved DIK_LEFT så er moveLeft true. Det samme gjør jeg for utskytning av kuler. GameLogic skal i hovedsak holde orden på hvilke posisjoner de forskjellige objektene i spillet har (motstander, spiller, kuler osv.) GameRender rendrer spriteobjektene på de nye posisjonene spesifisert i GameLogic. /////////////////////////////////////////////////////////////////////////////////////// Mitt problem er som følger. Jeg prøver finne en grei måte å holde styr på avfyrte kuler, kollisjon og out-of-bounds sjekking. Jeg tenkte at jeg eventuelt kunne lage en ny struct med x-pos,y-pos og en Alive boolean variabel. Alive er true når kulen er avfyrt, og false når den er out-of-bounds eller har kræsjet med et objekt. På denne måten tenker jeg at jeg kan opprette nye kuler, samt holde styr på alle som skal renderes (en enkel for-loop for å se om alive == true). Dette virker dog som en teit løsning, og jeg er sikker på at det er noen kloke hoder her som har andre forslag. All hjelp og kommentarer taes i mot med stor takk. Endret 13. januar 2008 av jabberjab
Mr.Garibaldi Skrevet 13. januar 2008 Skrevet 13. januar 2008 Tja, en struct som holder informasjonen (strengt tatt bare posisjonen) og så holder du styr på dem i en array/liste, er ganske standard for partikkelsystemer (som dette jo i en viss forstand er)... Det er en veldig grei løsning siden du bare rendrer hele listen hver gang, og når du oppdaterer posisjonen fjerner de som ikke lenger er aktive. For mer info om partikkelsystemer vil jeg anbefale deg å starte med artikkelen "The Ocean Spray in Your Face" av Jeff Lander som ble publisert i Game Developer Mag 07/98. (Ja den er gammel, men den en er fortsatt veldig viktig)
jabberjab Skrevet 13. januar 2008 Forfatter Skrevet 13. januar 2008 (endret) Tusen takk for svar. Jeg skal lese om partikkelsystemer og artikkelen du nevnte, så får vi se hva jeg ender opp med Endret 13. januar 2008 av jabberjab
_vamecum Skrevet 28. januar 2008 Skrevet 28. januar 2008 spillobjekter skal vel (de aller fleste hvert fall) kollisjonssjekkes på. for eks. skip vs alle kuler. Det kan lønne seg med en oppdeling av rommet i flere soner, slik at skipet kun sjekker kulene som er i samme sone. vanlige sone inndelinger er grid (lettest) og quadtree (litt mer komplisert). Grid går ut på at du deler skjermen inn i et grid, og kun sjekker det griddet det ene kollisjonsobjektet er i (for eks. skip vs kule, så sjekker du kun i skipet sitt grid). quadtree går ut på at hm. nei, orker ikke forklare, men http://en.wikipedia.org/wiki/Quadtree Jeg vil anbefale å gå for grid-løsning.
hishadow Skrevet 28. januar 2008 Skrevet 28. januar 2008 Et tips for alive boolean variabelen din kan være å bruke enum/int i stedet for å lagre for eksempel tilstanden til kula. Da kan den for eksempel være OUT_OF_BOUNDS, HIT_OBJECT etc. Det gjør det enklere for deg å endre/utvide hvis du vil gjøre endringer senere.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå