Avatar billede gobbles Nybegynder
09. januar 2005 - 00:55 Der er 15 kommentarer

et lille cykel spil?

Hej
jeg er ved at lave et lille cykelspil og har sådan til dels fået lavet styringen osv. jeg har dog et kæmpe problem jeg ikke lige er løbet ind i før mht. hitTest.. jeg vil gerne kunne tegne en bane, bakker, ramper og hvad der nu hører med(ren 2d), men jeg kan ikke få mit cykel mc til at følge kurverne på banen når jeg kører frem og tilbage(vinkel, højde osv.).. hitTest er ikke præcist nok.

Er der nogen(det er der garanteret ;) )der har en ide til hvordan jeg kommer ud over det problem?

tak på forhånd
Avatar billede alexander_j Nybegynder
09. januar 2005 - 10:15 #1
Hittest fungerer som firkanter og det vil sige at hvis du tegner en cirkel, så fungerer hittest på hele firkanten rundt om movieclippet - i dette tilfælde altså også ude i hjørnerne, hvor der ellers ikke er tegnet noget, da det jo var en cirkel.

For mig at se har du tre alternativer du kan bruge:
1. det ene er map array, som består af et array med forskellige værdier fx
mymaparray = new Array( 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 2, 1, 1, 1, 1, 0, 1, 0, 0);
, hvor de forskellige værdier betegner forskellige højder - så er det 'bare' at tjekke hvor langt cyklen er kommet på distancen og sammenligne med den tilhørende værdi i mymaparray, så skulle det med højderne være klaret.
Denne løsning er ikke optimal(heller ikke til dit spil), men fungere fint til forskellige platformsspil.

2. anden løsning er at udregne alle kurver geometrisk - dvs. lave en geometrisk tegning med punkter og linier over din bane - derefter skal du bare tjekke konstant om cyklen geometrisk krydser linien og korrigere cyklens position derefter.
Er nok den mest optimale løsning, men absolut også den mest komplicerede!

3. Endelig kunne du også lave et movieclip med cyklens position på banen - du tegner en guideline og lader cyklen følge den frame for frame - cyklens position på banen skal så henvises til et bestemt frame i dit movieclip.
Dette er nok den umiddelbart nemmeste løsning, men har du over tredive baner eller hvis banerne blivere genereret automatisk og tilfældigt, så er dette ikke løsningen!
Avatar billede gobbles Nybegynder
09. januar 2005 - 11:15 #2
hmm tak, jeg kan godt se du har en pointe med de forskellige teknikker, jeg har fundet den her http://www.teagames.com/games/bmxbackflips/play.php som ville være et resultat jeg gerne ville i"nærheden" af, de er ret skrappe de her fyre..men..

hvordan tror du det er lavet?
Avatar billede alexander_j Nybegynder
09. januar 2005 - 12:06 #3
Jeg vil tro at de har brugt den svære metode med at udregne det geometrisk!

så det er noget med x- og y-koordinater, kurver og linier, og så en afstandsberegning på hvert hjuls centrum til linien/ kurven og sørge for at den ikke overstiger radius på hjulet!

Hvis du ikke er geometrisk hjemme, så er der lang vej, men Barklund har skrevet en lille artikel om hvordan man beregner afstanden fra et punkt (i dit tilfælde hvert hjuls centrum) - den kunne du da starte med: http://actionscript.dk/artikler/?a=22
Og hvis du beder ham pænt om det, så kunne det da også være han ville lave en artikel om hvordan man beregner afstanden til en kurve - så er der kun tilbage for dig at tegne banerne geomtrisk (og eventuelt grafisk - hvor du bruger den geomtriske til beregningerne og den grafiske til det spilleren ser) samt at sætte det hele sammen!
Avatar billede gobbles Nybegynder
09. januar 2005 - 12:12 #4
jaa jeg kan godt se det involverer en del arbejde.. nå det geometriske skulle være ok på plads, så må jeg jo bare lige se om jeg kan finde ud af syntaksen.. det må evt. kunne gøres sådan at flash tegner banen dynamisk og selv holder styr på funktionerne..
tak smid bare et svar.. jeg lader den lige hænge lidt, det kunne jo være der sad nogen og så med der havde et svar..
Avatar billede alexander_j Nybegynder
09. januar 2005 - 12:36 #5
Så venter jeg med et svar til den tid :-D
Avatar billede gobbles Nybegynder
09. januar 2005 - 12:38 #6
Ok!
Har lige været på barklunds side, det ser godt ud, håber den får en go start!
Avatar billede pyroman Nybegynder
09. januar 2005 - 21:43 #7
Der er én til løsning som ikke er ligeså god som den fuldstændige matematiske løsning - men klart den mest præcise og næsten eneste måde når det gælder vilkårlige former, som fri-håndstegnede kurver osv.

Metoden går ud på at du tjekker punkter på hjulenes omkreds med et bestemt vinkel interval. Disse punkter tjekker du så for "hit" med jorden. Da din cykel bevæger dig i "ryk" - små intervaller, kan det dog ske at flere af punkterne rører samtidig. Derfor er man nødt til at gå tilbage i mindre intervaller indtil at kun ét punkt rører. Den vinkel det punkt sidder i i forhold til centrum af hjulet er så indgangsvinklen - og man kan så finde udgangsvinklen. Det vil egentlig få cyklen til at hoppe - men når indgangvinklen er lille nok vil det se ud som om at cyklen glider over overfladen.
Jeg har endnu ikke efterprøvet dette til ende men har haft lavet en mindre test - tror måske at det kan blive en lort for stor udregningsopgave at klare for flash - men det kan da prøves. Koden er heller ikke lige til.

Men den bedste perfomance-mæssigt og præcise metode er den geometrisk-matematiske... som kræver lidt brain (eller research)
Avatar billede gobbles Nybegynder
10. januar 2005 - 04:17 #8
Tak for input
JEg har været rundt omkring på nettet og der findes mange gode og dårlige forslag.. men faktum er jo der findes helt perfekte cykel/motorcross spil derude. så der findes jo nok en måde uden om det..
Jeg ville da meget gerne se hvis du havde lavet en lille demo, jeg roder selv lidt videre med foreslaget om at skrive rette ligninger hvor man så udregner afstanden hele tiden.. det vil gøre det overskueligt for flash mht. udregninger og så kan man bygge videre med kurver...hvis altså man gider at sidde og finde på og differentiere udtrykkene.. jeg har dog bare et problem med tyngdekraften når jeg gør det på denne måde... den gælder jo pludselig ikke længere når cyklen "bare" følger underlaget.. så der er et par problemer mere i det her projekt.
Avatar billede alexander_j Nybegynder
10. januar 2005 - 16:27 #9
Jeg fik lige lyst til at afprøve mit løsningsforslag 3, den med motiontweening og guidelines - og resultatet er faktisk ikke helt ringe (jeg gjorde mig ikke voldsomt umage med tilpasningen eller noget). Så hvis du går død i geometrien, så er det da en mulighed!

http://www.vestermarie-skole.dk/temp/cykel.html
http://www.vestermarie-skole.dk/temp/cykel.zip
Du styre med højre venstre piletast!
Avatar billede gobbles Nybegynder
10. januar 2005 - 20:33 #10
Ja.. jeg kan godt se det men.. ideen med at være påvirket af tyngdekraft og at man som spiller har nogen indvirkning på udfaldet er lidt væk... jeg tror jeg satser på ikke at gå kold i geometrien :)
Avatar billede alexander_j Nybegynder
10. januar 2005 - 21:07 #11
Synes da også du skal satse på geometrien, men i den .fla jeg har lavet er x og koordinaterne uafhængige af hinanden - prøv at trykke på op og ned tasterne og højre og venstre tasterne, så vil du kunne rykke op og ned(dette kunne blive til tyngdekraft med rette kodning) - dog ikke længere ned end banens bund. Så er det jo herefter 'bare' at gøre det til tyngdekraft og acceleration osv., så der er masser af muligheder for at spilleren kan påvirke udfaldet - men som sagt, så synes jeg generelt også bedst om geometrien - men det her er et reelt alternativ, som muligvis kan blive lige så godt!
Avatar billede gobbles Nybegynder
11. januar 2005 - 09:22 #12
Jeg har lidt tid idag, tror lige jeg forsøger at lave en version med kun lige linier... problemet ved at have kurver er at jeg skal sidde og finde funktionerne for kurverne og derefter differentiere dem... eller måske kan man opstille et udtryk der vha. af x koordinatet finder afstanden løbende....jeg roder lige lidt.
Avatar billede gobbles Nybegynder
11. januar 2005 - 11:01 #13
så har jeg rodet lidt.. det virker ok efter hensigten, man kan kun trykke pil til højre og "køre" til højre.
Men jeg har dog lidt vrøvl med scriptet.. det hakker en del når man kører.
Jeg har brugt barklunds afstands script, og fordelen ved denne måde er at for hver ny bakke man ønsker skal der kun tilføjes en linie kode..

http://www.texo.dk/demo/bike/bike-test-distance.html
http://www.texo.dk/demo/bike/bike-test-distance.zip

se om du måske kan opsnuse hvilke værdier der skal bruges for at hjulet ikke hopper så meget.
Avatar billede gobbles Nybegynder
11. januar 2005 - 11:08 #14
nu kan den begge veje....-> <-
Avatar billede gobbles Nybegynder
13. januar 2005 - 11:11 #15
Nogen ide til hvordan jeg får tyngdekraft og rotation flettet ind i mit script?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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