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?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
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!
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..
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!
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..
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)
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.
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!
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 :)
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!
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.
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..
Nogen ide til hvordan jeg får tyngdekraft og rotation flettet ind i mit script?
Synes godt om
Ny brugerNybegynder
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.