Avatar billede or.han Nybegynder
05. juli 2005 - 23:00 Der er 22 kommentarer og
1 løsning

Hjælp til flashspil (ala slime soccer)

Heey...
Jeg har lært lidt actionScript og vil derfor lege lidt med det. Jeg har altid ville lave spil, og det er så det jeg prøver nu. Jeg er gået lidt i gang selv, men der er dog mange ting som jeg ikke aner hvordan jeg skal løse.

For at starte har jeg fået min "slime" til at bevæge sig frem og tilbage. Så kan den også hoppe nu, men det ser ikke godt ud. Her er mit script som er på "slime1":

onClipEvent (load) {
        var hopper:Boolean = false;
        var falder:Boolean = false;
        var hastighed:Number = 7;
        var sceneh:Number = 300;
        var sceneb:Number = 600;
        this._y = sceneh-_root.jord._height;
        this._x = 10+this._height;
        var radius:Number = this._height+3;
        var højde:Number = 75;
}
onClipEvent (enterFrame) {
        // frem og tilbage
        if (Key.isDown(Key.LEFT) && this._x>radius) {
                this._x -= hastighed;
        }
        if (Key.isDown(Key.RIGHT) && this._x<sceneb-(radius)) {
                this._x += hastighed;
        }
        // hoppe
        if (Key.isDown(Key.UP) && !hopper && !falder) {
                hopper = true;
                starty = this._y;
        }
        if (hopper && !falder) {
                this._y -= (starty-højde)/20;
                if (this._y<=starty-højde) {
                        falder = true;
                }
        }
        if (falder) {
                this._y += (starty-højde)/20;
                if (this._y>=starty) {
                        this._y = sceneh-_root.jord._height;
                        falder = false;
                        hopper = false;
                }
        }
}



Det første jeg vil have er at hoppet ser ordentligt ud. Derefter vil jeg gerne have hjælp til bolden. Jeg håber I vil prøve at guide mig gennem dette, så jeg får lavet mit første spil...
Avatar billede or.han Nybegynder
06. juli 2005 - 00:17 #1
Jeg har ændret lidt på det:
onClipEvent (load) {
    var hopper:Boolean = false;
    var falder:Boolean = false;
    var hastighed:Number = 7;
    var sceneh:Number = 300;
    var sceneb:Number = 600;
    this._y = sceneh-_root.jord._height;
    this._x = 10+this._height;
    var starty = sceneh-_root.jord._height;
    var radius:Number = this._height;
    var højde:Number = (this._height*2)+10;
}
onClipEvent (enterFrame) {
    // frem og tilbage
    if (Key.isDown(Key.LEFT)) {
        this._x -= hastighed;
        if (this._x<=radius) {
            this._x = radius;
        }
    }
    if (Key.isDown(Key.RIGHT)) {
        this._x += hastighed;
        if (this._x>=sceneb-radius) {
            this._x = sceneb-(radius);
        }
    }
    // hoppe
    if (Key.isDown(Key.UP) && !hopper && !falder) {
        hopper = true;
    }
    if (hopper && !falder) {
        this._y -= 8;
            if (this._y<=starty-højde) {
                falder = true;
        }
    }
    if (falder) {
        this._y += 8;
            if (this._y>=starty) {
                this._y = starty;
                falder = false;
                hopper = false;
        }
    }
}

Det jeg gerne vil have er at når man trykker på Key.UP, så skal "slime" hoppe og jo højere den kommer op mister den hastighed og til sidst stopper den i luften og falder ned med en accelerende fart. I ved nok hvad jeg mener....
Avatar billede webt Nybegynder
06. juli 2005 - 21:49 #2
Her er en rigtig god tutorial:
http://www.prospects-web.com/platform.php

Med den skulle du kunne lave noget lign:
http://martin-nielsen.com/exp/630692/

Håber du kan bruge det
Mvh
Martin
Avatar billede or.han Nybegynder
06. juli 2005 - 23:21 #3
Jeg har prøvet den tutorial og andre, men det virker ikke...
Jeg har lavet koden så den er således:
onClipEvent (load) {
    var hopper:Boolean = false;
    var falder:Boolean = false;
    var hastighed:Number = 7;
    var sceneh:Number = 300;
    var sceneb:Number = 600;
    this._y = sceneh-_root.jord._height;
    this._x = 10+this._height;
    var starty = sceneh-_root.jord._height;
    var radius:Number = this._height;
    var højde:Number = (this._height*2)+10;
    var tyngde:Number = 0.9;
    var faldhastighed:Number = 0;
}
onClipEvent (enterFrame) {
    // frem og tilbage
    if (Key.isDown(Key.LEFT)) {
        this._x -= hastighed;
        if (this._x<=radius) {
            this._x = radius;
        }
    }
    if (Key.isDown(Key.RIGHT)) {
        this._x += hastighed;
        if (this._x>=sceneb-radius) {
            this._x = sceneb-(radius);
        }
    }
    // hoppe
    if (Key.isDown(Key.UP) && !hopper && !falder) {
        hopper = true;
    }
    if (hopper && !falder) {
        this._y -= 7;
        if (this._y<=starty-højde) {
            falder = true;
        }
    }
    if (falder) {
        faldhastighed += tyngde;
        this._y += faldhastighed;
        if (this._y>=starty) {
            faldhastighed = 0;
            this._y = starty;
            falder = false;
            hopper = false;
        }
    }
}


Der sker ikke den der "easing"... Kan I ikke prøve at ændre på actionscriptet?
Avatar billede webt Nybegynder
06. juli 2005 - 23:25 #4
Har du checket min eksempel fil, der er eksempel med as hvordan det virker, lidt for sløv til at rodde med andet kode, er på smertemedicin weee :)
Avatar billede or.han Nybegynder
07. juli 2005 - 00:23 #5
ja har tjekket din men det virker ik med min
Avatar billede webt Nybegynder
07. juli 2005 - 08:22 #6
hvilken del virker ikke?
Avatar billede or.han Nybegynder
07. juli 2005 - 12:44 #7
det virker, men det ligner bare ikke den måde din figur hopper på
Avatar billede webt Nybegynder
07. juli 2005 - 13:21 #8
Kan du ikke lige smide din fla op et sted så kan jeg lige kigge på den, lidt svært når man ikke har de forskellige mc' at gennemskue
Avatar billede or.han Nybegynder
07. juli 2005 - 18:38 #9
Her er den: home1.stofanet.dk/orhan/slimesoccer.fla
Når du nu kigger på den, kan så ikke også se om du kan gennemskue hvorfor bolden kommer bag en, når man løber hurtigt ind i den..??
Avatar billede webt Nybegynder
08. juli 2005 - 00:25 #10
Kigger på den i morgen :) eller dvs senere i dag

Mvh
Martin
Avatar billede or.han Nybegynder
08. juli 2005 - 00:45 #11
Hvis du nu forstår JAVA, så er slimesoccers source code tilrådighed her: http://fractal.leet.net.au/download.php?target=files/wcss.zip
Avatar billede webt Nybegynder
08. juli 2005 - 09:39 #12
Forstå ikke meget andet af java end af slimesoccer er ekstremt underholdende og vanedannende heh :) nå men jeg kiggede lidt på din kode, og kunne ikke rigtigt gennemskue hvorfor det ikke virkede, så jeg prøvede lige at lægge et par ting sammen og rodde lidt med tyngde og faldhastighed, tror den er der nu:
onClipEvent (load) {
    var hopper:Boolean = false;
    var falder:Boolean = false;
    var hastighed:Number = 7;
    var sceneh:Number = 300;
    var sceneb:Number = 600;
    this._y = sceneh-_root.jord._height;
    this._x = 10+this._height;
    var starty = sceneh-_root.jord._height;
    var radius:Number = this._height;
    var højde:Number = (this._height*2)+10;
    var tyngde:Number = 0.5;
    var faldhastighed:Number = 0;
}
onClipEvent (enterFrame) {
    // frem og tilbage
    if (Key.isDown(Key.LEFT)) {
        this._x -= hastighed;
        if (this._x<=radius) {
            this._x = radius;
        }
    }
    if (Key.isDown(Key.RIGHT)) {
        this._x += hastighed;
        if (this._x>=sceneb-radius) {
            this._x = sceneb-(radius);
        }
    }
    // hoppe
    if (Key.isDown(Key.UP) && !falder) {
        hopper = true;
        faldhastighed = -15;
        falder = true;
        this._y += faldhastighed;
        if (this._y<=starty-højde) {
            falder = true;
            faldhastighed = 0;
        }
    }
    if (falder) {
        faldhastighed += tyngde;
        this._y += faldhastighed;
        if (this._y>=starty) {
            faldhastighed = 0;
            this._y = starty;
            falder = false;
            hopper = false;
        }
    }
}

Med hensyn til at man kan løbe gennem bolden, så er det fordi din hastighed er sat til 7 mens din bold kun bevæger sig 5, så hvis bolden bliver sat til 7 altså:
this._x += 7; så virker det :)

Håber du kan bruge det

Mvh
Martin
Avatar billede or.han Nybegynder
08. juli 2005 - 14:51 #13
yiar tak... jeg ændrede bare lige faldhastighed til -10, for ellers hoppede den meget højt..
Avatar billede webt Nybegynder
08. juli 2005 - 15:02 #14
Heh ja, skulle bare lige overdrive så jeg var sikker på den virkede kan så ikke forklare hvorfor det virker mens alt sammen står inde i keyup funktionen og ikker virker når det står seperat, men det skal man nok ikke tænke så meget over :) du får lige et svar fra mig af :)

Og hvis der noget med den finder vi ud af det også

Mvh
Martin
Avatar billede or.han Nybegynder
08. juli 2005 - 15:05 #15
"Og hvis der noget med den finder vi ud af det også"
Hvad mener du??
Avatar billede webt Nybegynder
08. juli 2005 - 15:11 #16
Ah lød måske lidt forkert,, mente, hvis der er mere med den finder vi også ud af det uden ekstra point :)

Når du engang er færdig må du da gerne lige smide et link så man kan se det færdige resultat, er stor fan af slimesoccer samt slimevolley :)
Avatar billede or.han Nybegynder
08. juli 2005 - 16:10 #17
Nåh okay på den måde. Hehe ja jeg glæder mig også til jeg får lavet det. Skal nok smide et link her ind.
Ja nu kan slimen bevæge sig, så nu vil jeg prøve at lave noget med bolden. Bolden kan skubbes frem og tilbage, men den skal jo også op. Det der bliver sværest er vel når man trykker Key.DOWN og bolden ruller over en. Hvordan skal jeg klare det?? For det første skal bolden rulle på en rund kant og for det andet skal bolden "klistre" sig fast. Har du nogle ideer?
Avatar billede webt Nybegynder
08. juli 2005 - 19:54 #18
Puha, nej det er vist lige over mit niveau, men det må blive noget med nogle seriøse udregninger, jeg ser lige om jeg ikke har et par links i ærmet
Avatar billede or.han Nybegynder
08. juli 2005 - 23:13 #19
For at finde punkterne som er på figurens kant, lavede jeg det her:
var radius:Number = _root.slime1._height;
var pi:Number = Math.PI;
var slimex:Number = 45;
var slimey:Number = 240;
var dec:Number = 20;
_root.slime1._x = slimex;
_root.slime1._y = slimey;
var slimex:Number = _root.slime1._x;
var slimey:Number = _root.slime1._y;
for(i=0;i<=pi;i=i+0.1){
    korx_t = (Math.cos(i)*radius)+slimex;
    kory_t = slimey-(Math.sin(i)*radius);
    korx = Math.round(korx_t*dec)/dec
    kory = Math.round(kory_t*dec)/dec
    trace("( "+korx+" ; "+kory+" )")
}

Men jeg ved ikke hvordan jeg kan bruge det til noget. Selv om "SlimeSoccer" ser ud til at være simpelt, så er der alligvel en del matematik i. Noget andet der også bliver svært at lave (tror jeg) er når bolden rammer slimen og så skal der beregnes hvilken vej bolden så skal hen. Jeg tænkter på en tangent der rammer det punkt bolden og slimen rører hinanden, og så bruger man den tanget til at "spejle" boldens tidligere rute.. eller noget...
Er lidt lost nu...
Avatar billede or.han Nybegynder
08. juli 2005 - 23:15 #20
hmm "var pi:Number = Math.PI;" bliver slet ikke brugt.. bare uden den så...
Avatar billede or.han Nybegynder
08. juli 2005 - 23:16 #21
eller jo det gjorde den så.. hehe
Avatar billede or.han Nybegynder
08. juli 2005 - 23:39 #22
Jamen hvordan laver folk baner som har bakker osv?? Fx er der mange af den slags på www.teagames.com. De der BMX spil har bakker og små ting man skal køre over og de er ikke firkantede men runde og andre former...
Avatar billede webt Nybegynder
09. juli 2005 - 10:08 #23
Heh jeg er en dør til matematik, dumpede næsten matematik B på handelsskolen i tidernes morgen :D tror næsten du må ha fat i en bog om emmet, fandt lige:
http://www.pensum.dk/prissammenligning.php?source=ext&sval=0201770210&stype=isbn

beskrivelsen af bogen:
So you wanna be a hotshot game designer? Well, if you have a basic grasp of Macromedia Flash MX, you can. Unafraid to tackle some of the more complicated aspects of game creation (including physics and trigonometry!), this comprehensive reference covers it all. Macromedia Flash Game Design Demystified starts out with the basics: planning, adapting ActionScript techniques, using introductory Flash game techniques, and more. Then it gets down to the real business of building simple games. You'll tackle simple-logic and quiz games before moving on to multiplayer and complex-logic games (chess, for example)--learning about importing 3-D graphics, adding sound effects, and licensing your games in the process. The book's companion CD includes the source files for a number of games as well as the tutorials and lessons that go along with the book and XML server software to facilitate multiplayer games. If you're tired of the games that you have and want to make your own action, this book offers comprehensive coverage of sophisticated techniques--but put in easy-to-grasp, practical terms.

Men kigger da videre efter direkte spil tutorials
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