Flash-kod hjälp, skapa "stopp" i flashspel

Medlem
Flash-kod hjälp, skapa "stopp" i flashspel

Vi sitter ett gäng och kodar ett flashspel, i sidescroller-stil, och har ett litet problem.

Vi försöker skapa ett stopp så att våran figur stannar när den åker in i taket och "golvet". Vi har hittat lite kodexempel, men inte fått ut något klart ur det. Vi har hittat lösning om man har en konstant hastighet, men vi använder gravitation respektive power, vilket gör att det inte fungerar för oss.

Någon som kan peka på en bra guide eller ge oss en lösning?

En liten bild på vårat grundläggande koncept än så länge. Våran fågel ("Tottebirden") ska alltså inte kunna lämna skärmen.

http://i52.tinypic.com/am8ark.png


signatur

Motivator's Lifestyle. Athletic Martyr. Build your own foundation.

Medlem
Skrivet av r3lev4nt:

Vi sitter ett gäng och kodar ett flashspel, i sidescroller-stil, och har ett litet problem.

Vi försöker skapa ett stopp så att våran figur stannar när den åker in i taket och "golvet". Vi har hittat lite kodexempel, men inte fått ut något klart ur det. Vi har hittat lösning om man har en konstant hastighet, men vi använder gravitation respektive power, vilket gör att det inte fungerar för oss.

Någon som kan peka på en bra guide eller ge oss en lösning?

En liten bild på vårat grundläggande koncept än så länge. Våran fågel ("Tottebirden") ska alltså inte kunna lämna skärmen.

http://i52.tinypic.com/am8ark.png

Väldigt svårt att hjälpa när man inte vet hur eran kod ser ut.
Ni kan ju ha programmerat uppdateringsfunktionen hos fågeln på väldigt många olika sätt.

Men ett standardsätt att lösa det på är att, varje gång man uppdaterar fågelns position, även göra en check så att fågelns x och y-positionsvärden alltid är mindre/större än kanterna. Dvs att (fågel.x, fågel.y) alltid är inom den "rektangel" ni vill ha fågeln i, t.ex. skärmupplösningen eller något annat. Om han inte är inom kollisionsrektangeln ni valt så är det bara att flytta honom så att han är på insidan igen.


signatur

Have a good time!

Medlem

Jag är med i teamet och detta är våran kod:

onClipEvent (load) { power = 2.6; yspeed = 0; xspeed = 0; friction = 0.5; gravity = 1.3; } onClipEvent (enterFrame) { if (Key.isDown(Key.SPACE)) { yspeed -= power; } else if (Key.isDown(Key.UP)) { yspeed -= power; } else if (Key.isDown(87)) { yspeed -= power; } else if (Key.isDown(1)) { yspeed -= power; } xspeed *= friction; yspeed += gravity; _y += yspeed; _x += xspeed; }

Nåt värt att nämna är också att vi använder ActionScript 2 och den här koden är lagd i karaktären.

Medlem

Lägg bara till en if-sats i "onClipEvent (enterFrame)" som ser ut som följande:

onClipEvent (load) { power = 2.6; yspeed = 0; xspeed = 0; friction = 0.5; gravity = 1.3; } onClipEvent (enterFrame) { if (Key.isDown(Key.SPACE)) { yspeed -= power; } else if (Key.isDown(Key.UP)) { yspeed -= power; } else if (Key.isDown(87)) { yspeed -= power; } else if (Key.isDown(1)) { yspeed -= power; } xspeed *= friction; yspeed += gravity; if((_x + xspeed < screenwidth) && (_x + xspeed > 0)) {_x += xspeed;} if((_y + yspeed < screenwidth) && (_y + yspeed > 0)) {_y += yspeed;} }

Vet dock inte hur ni får tag på screenwidth/screensize ... kör ni fullscreen fungerar:
System.capabilities.screenResolutionX
System.capabilities.screenResolutionY

Annars har ni nog ställt in storleken själv och då är det ju bara att skicka storleken som en parameter när ni skapar fågelobjektet/instansen.


signatur

Have a good time!

Medlem

Vi provade denna kodbit.. var det som du tänkte det?

onClipEvent (load) { power = 2.6; yspeed = 0; xspeed = 0; friction = 0.5; gravity = 1.3; } onClipEvent (enterFrame) { if (Key.isDown(Key.SPACE)) { yspeed -= power; } else if (Key.isDown(Key.UP)) { yspeed -= power; } else if (Key.isDown(87)) { yspeed -= power; } else if (Key.isDown(1)) { yspeed -= power; } xspeed *= friction; yspeed += gravity; if((_x + xspeed < System.capabilities.screenResolutionX) && (_x + xspeed > 0)) {_x += xspeed;}         if((_y + yspeed < System.capabilities.screenResolutionY) && (_y + yspeed > 0)) {_y += yspeed;} }

Den koden gav dessa fel:
Line 27 Syntax Error
Line 28 Statement must appear within on/onClipEvent Handler
Line 29 Unexpected '}' encountered

Skulle du kunna förklara lite mer vad olika delar av koden gör? Vore väldigt snällt!

Medlem
Skrivet av Payerl:

Vi provade denna kodbit.. var det som du tänkte det?

onClipEvent (load) { power = 2.6; yspeed = 0; xspeed = 0; friction = 0.5; gravity = 1.3; } onClipEvent (enterFrame) { if (Key.isDown(Key.SPACE)) { yspeed -= power; } else if (Key.isDown(Key.UP)) { yspeed -= power; } else if (Key.isDown(87)) { yspeed -= power; } else if (Key.isDown(1)) { yspeed -= power; } xspeed *= friction; yspeed += gravity; if((_x + xspeed < System.capabilities.screenResolutionX) && (_x + xspeed > 0)) {_x += xspeed;}         if((_y + yspeed < System.capabilities.screenResolutionY) && (_y + yspeed > 0)) {_y += yspeed;} }

Den koden gav dessa fel:
Line 27 Syntax Error
Line 28 Statement must appear within on/onClipEvent Handler
Line 29 Unexpected '}' encountered

Skulle du kunna förklara lite mer vad olika delar av koden gör? Vore väldigt snällt!

Istället för System.capabilities.screenResolutionY testa bara några olika tal, t.ex. 400 eller 500 för att se vad som händer.

Felen ni fått indikerar på att det saknas { eller } någonstans, eventuellt att parenteserna är fel.

Jag tycker koden är ganska självförklarande. Vad är det ni vill ha förklarat?
Specificera så hjälper jag mer än gärna till.


signatur

Have a good time!

Medlem

Problemet löstes genom att ta bort hålet framför den andra

if((_y + yspeed < System.capabilities.screenResolutionY)

Problemlösning på hög nivå!
Tilläggas kanske bör att vi är helt gröna på Flash tills för ett par veckor sen, vi har alltså inte den kunskapen än att kunna se typiska fel så snart.


signatur

Motivator's Lifestyle. Athletic Martyr. Build your own foundation.

Medlem

Vi lyckades fixa ett "tak" på spelet men nu måste vi fixa golvet och vi har stött på ett problem när vi försökte programmera golvet. Nämligen att när karaktären nuddar "golvet" så hoppar den upp högst upp istället för att stanna där nere... Kan någon ge oss lite tips på vad som är fel i våran kod? Vi skulle också vilja ha en funktion som gör att när vi trycker på en av styrknapparna så startar en ljudfil.

onClipEvent (load) { timer = 0; power = 2.6; yspeed = 0; gravity = 1.3; } onClipEvent (enterFrame) { if (Key.isDown(Key.SPACE)) { yspeed -= power; } else if (Key.isDown(Key.UP)) { yspeed -= power; } else if (Key.isDown(87)) { yspeed -= power; } else if (Key.isDown(1)) { yspeed -= power; } yspeed += gravity; _y += yspeed; if (_root.bird.hitTest(_root.wall_up)){ {yspeed= -yspeed; _y = 61; if (timer < 35) { power=0; timer++; } if (timer ==36) {timer = 0;} power = 2.6; } } if (_root.bird.hitTest(_root.wall_down)){ {yspeed= -yspeed; _y = 349; if (timer < 35) { power=0; timer++; } if (timer ==36) {timer = 0;} power = 2.6; }} }

1
Skriv svar