Avatar billede svarre Nybegynder
11. oktober 2005 - 13:01 Der er 19 kommentarer og
1 løsning

2 Biler i bevægelse - HVORDAN?

Hej Alle
Jeg har (et sikkert simpelt) spørgsmål. Jeg arbejder med at få en bil til at bevæge sig - her med piletasterne.
onClipEvent (enterFrame) {
    // make the car go forward
    if (Key.isDown(Key.UP)) {
        speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.DOWN)) {
        speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(speed)>20) {
        speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.LEFT)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.RIGHT)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    speed *= .98;
    x = Math.sin(_rotation*(Math.PI/180))*speed;
    y = Math.cos(_rotation*(Math.PI/180))*speed*-1;
    if (!_root.land.hitTest(_x+x, _y+y, true)) {
        _x += x;
        _y += y;
    } else {
        speed *= -.6;
    }
Nu vil jeg gerne have en anden bil ind som skal styres med f.eks. a s d w. Hvordan gør jeg det?`

I anden omgang vil jeg gerne vide hvordan jeg f.eks. får den til at tælle omgange så den bil der kommer over målet f.eks. 3 gange vinder
Håber I kan hjælpe
Avatar billede Slettet bruger
11. oktober 2005 - 14:13 #1
JAAA!!
Endelig et spørgsmål hvor jeg kan hjælpe!

Prøv:

onClipEvent (enterFrame) {
    // make the car go forward
    if (Key.isDown(Key.UP)) {
        speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.DOWN)) {
        speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(speed)>20) {
        speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.LEFT)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.RIGHT)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    speed *= .98;
    x = Math.sin(_rotation*(Math.PI/180))*speed;
    y = Math.cos(_rotation*(Math.PI/180))*speed*-1;
    if (!_root.land.hitTest(_x+x, _y+y, true)) {
        _x += x;
        _y += y;
    } else {
        speed *= -.6;
    }
    //SECOND CAR:
    // make the car go forward
    if (Key.isDown(Key.UP)) {
        b_speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.DOWN)) {
        b_speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(b_speed)>20) {
        b_speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.LEFT)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.RIGHT)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    b_speed *= .98;
    b_x = Math.sin(_rotation*(Math.PI/180))*b_speed;
    b_y = Math.cos(_rotation*(Math.PI/180))*b_speed*-1;
    if (!_root.land.hitTest(_x+b_x, _y+b_y, true)) {
        _x += b_x;
        _y += b_y;
    } else {
        b_speed *= -.6;
    }
}

Altså simpelthen gentage koden med andre variabler...

Prøv det lige,og skriv, om det virker, ok?
Jeg bliver glad hvis det gør ;)

Desuden kan du erstatte +=1 med ++.
Eks.:
'a+=1;' og 'a++;' gør det samme.

Men det er jo bare for at spare ET tegn hver gang...
Så det kan du jo selv finde ud af, om du vil bruge :)
Avatar billede Slettet bruger
11. oktober 2005 - 14:16 #2
HOV!!
Jeg glemte noget...
Fra '//SECOND CAR:' skal koden stå på denanden bils movieclip.

Altså på første bil:

onClipEvent (enterFrame) {
    //FIRST CAR:
    // make the car go forward
    if (Key.isDown(Key.UP)) {
        speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.DOWN)) {
        speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(speed)>20) {
        speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.LEFT)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.RIGHT)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    speed *= .98;
    x = Math.sin(_rotation*(Math.PI/180))*speed;
    y = Math.cos(_rotation*(Math.PI/180))*speed*-1;
    if (!_root.land.hitTest(_x+x, _y+y, true)) {
        _x += x;
        _y += y;
    } else {
        speed *= -.6;
    }
}

Og på anden bil:

onClipEvent (enterFrame) {
    //SECOND CAR:
    // make the car go forward
    if (Key.isDown(Key.UP)) {
        b_speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.DOWN)) {
        b_speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(b_speed)>20) {
        b_speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.LEFT)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.RIGHT)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    b_speed *= .98;
    b_x = Math.sin(_rotation*(Math.PI/180))*b_speed;
    b_y = Math.cos(_rotation*(Math.PI/180))*b_speed*-1;
    if (!_root.land.hitTest(_x+b_x, _y+b_y, true)) {
        _x += b_x;
        _y += b_y;
    } else {
        b_speed *= -.6;
    }
}
Avatar billede svarre Nybegynder
11. oktober 2005 - 15:17 #3
Men det er jo den samme kode for begge biler, oder? Jeg vil gerne have at man skal kunne køre mod hinanden... F.eks den ene kører med piletasterne, den anden med w som frem, s som tilbage, a som højre og d venstre.
Avatar billede Slettet bruger
11. oktober 2005 - 15:47 #4
JAJA, din odder, men du erstatter bare key-koderne i det nederst script med de taster du vil bruge!
Eks.:

På første bil:

onClipEvent (enterFrame) {
    //FIRST CAR:
    // make the car go forward
    if (Key.isDown(Key.UP)) {
        speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.DOWN)) {
        speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(speed)>20) {
        speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.LEFT)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.RIGHT)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    speed *= .98;
    x = Math.sin(_rotation*(Math.PI/180))*speed;
    y = Math.cos(_rotation*(Math.PI/180))*speed*-1;
    if (!_root.land.hitTest(_x+x, _y+y, true)) {
        _x += x;
        _y += y;
    } else {
        speed *= -.6;
    }
}

Og på anden bil:

onClipEvent (enterFrame) {
    //SECOND CAR:
    // make the car go forward
    if (Key.isDown(Key.W)) {
        b_speed += 1;
    }
    // make the car go backwards
    if (Key.isDown(Key.S)) {
        b_speed -= 1;
    }
    // tells the car to slow down after the speed of 20
    if (Math.abs(b_speed)>20) {
        b_speed *= .7;
    }
    // you can change the rotation of the car to your desire
    if (Key.isDown(Key.A)) {
        _rotation -= 15;
    }
    if (Key.isDown(Key.D)) {
        _rotation += 15;
    }
    // here is where the hittest is for the boundary
    b_speed *= .98;
    b_x = Math.sin(_rotation*(Math.PI/180))*b_speed;
    b_y = Math.cos(_rotation*(Math.PI/180))*b_speed*-1;
    if (!_root.land.hitTest(_x+b_x, _y+b_y, true)) {
        _x += b_x;
        _y += b_y;
    } else {
        b_speed *= -.6;
    }
}

- Ikke?
Avatar billede Slettet bruger
11. oktober 2005 - 15:48 #5
Er det ikke det du mener...?
Avatar billede svarre Nybegynder
11. oktober 2005 - 16:05 #6
Hej. Har prøvet dette script før med if (Key.isDown(Key.W)) men det virker ikke... Måske er det fordi jeg bruger flash 5? Er der nogen der ved hvorfor?
Avatar billede Slettet bruger
11. oktober 2005 - 17:31 #7
Nååå...
Ja, det tror jeg.
Jeg bruger selv Flash MX...

Men virker det med den første bil?
Avatar billede Slettet bruger
11. oktober 2005 - 17:32 #8
Hvis det gør, skal du nok bare skrive:
'if (Key.isDown(Key.w))'
Avatar billede Slettet bruger
11. oktober 2005 - 17:39 #9
Eller du kan bruge tastekoden;
den kode der angiver tasten.
'w' er for eksempel '87'...
Eks.:
'if (Key.isDown(87))'

Her er et lille index:
w - 87
s - 83
a - 65
d - 68

Håber det virker nu...
Avatar billede svarre Nybegynder
11. oktober 2005 - 19:18 #10
virker! Ved du forresten hvordan man kan lave en tæller, så den der kommer over stregen i f.eks. 3 omgang har vundet...
Avatar billede Slettet bruger
11. oktober 2005 - 21:12 #11
Ja...
Du skal også bruge en usynlig streg så man ikke kan køre over stregen og så bakke tilbage igen...
Så den usynlige streg skal være ca. halvvejs gennem banen.
Hvis du f.eks. skriver denne kode i root'en:

onEnterFrame = function() {
    if (bil_a.hitTest(streg) {
        if (a_runder=2 && a_status == "usynlig_streg_passeret") {
            Handling der skal ske når der er kørt tre runder...
        } else if (a_status == "usynlig_streg_passeret") {
            a_status = "synlig_streg_passeret";
            a_runder ++;
Avatar billede Slettet bruger
11. oktober 2005 - 21:13 #12
WHOA!!
Undskyld, jeg kom til at trykke 'Dend'!!
:(
Avatar billede Slettet bruger
11. oktober 2005 - 21:13 #13
(Dend = Send)
Avatar billede Slettet bruger
11. oktober 2005 - 21:21 #14
Ja...
Du skal også bruge en usynlig streg så man ikke kan køre over stregen og så bakke tilbage igen...
Så den usynlige streg skal være ca. halvvejs gennem banen.
Hvis du f.eks. skriver denne kode i root'en:

a_status = "synlig_streg_passeret";
b_status = "synlig_streg_passeret";
a_runder = 0;
b_runder = 0;
onEnterFrame = function() {
    //Bil 1 (bil_a)
    if (bil_a.hitTest(synlig_streg) {
        if (a_runder == 2 && a_status == "usynlig_streg_passeret") {
            Handling der skal ske når bil 1 (bil_a) har kørt tre runder...
        } else if (a_status == "usynlig_streg_passeret") {
            a_status = "synlig_streg_passeret";
            a_runder ++;
        }
        if (bil_a.hitTest(usynlig_streg && a_status == "synlig_streg_passeret") {
            a_status = "usynlig_streg_passeret");
        }
    }
    //Bil 2 (bil_b)
    if (bil_b.hitTest(synlig_streg) {
        if (b_runder == 2 && b_status == "usynlig_streg_passeret") {
            Handling der skal ske når bil 2 (bil_b) har kørt tre runder...
        } else if (b_status == "usynlig_streg_passeret") {
            b_status = "synlig_streg_passeret";
            b_runder ++;
        }
        if (bil_b.hitTest(usynlig_streg && b_status == "synlig_streg_passeret") {
            b_status = "usynlig_streg_passeret");
        }
    }
}

Måske kræver det lidt finpudsning...
Avatar billede Slettet bruger
11. oktober 2005 - 21:23 #15
Den synlig streg skal her hedde 'synlig_streg' og den usynlige skal hedde... Gæt selv... 'usynlig_streg'!
Bilerne skal hedde 'bil_a' og 'bil_b'... Gæt selv, hvad der er hvad! ;)
Avatar billede Slettet bruger
11. oktober 2005 - 21:24 #16
- Det var svært, hva'??
;)
Avatar billede Slettet bruger
13. oktober 2005 - 14:33 #17
Virker det?
Avatar billede Slettet bruger
13. oktober 2005 - 14:35 #18
Ps.: Når du svarrer kan du bare skrive en kommentar...
Når man skriver et svar betyder det at du kan acceptere det og give personen der skrev svaret pointene... Så jeg har skrevet et svar herover.
Avatar billede Slettet bruger
22. november 2005 - 12:33 #19
Takker...
Avatar billede svarre Nybegynder
24. januar 2006 - 16:33 #20
Hey.
Undskyld det har taget så lang tid at vende tilbage.... Mht. tælleren kan vi ikke få det til at fungere. hvor skal det sættes ind henne? store problemer over hele linien.
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