11. oktober 2005 - 13:01Der 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
Udfordringerne hober sig op i fødevare- og drikkevareindustrien og gør den til en af de mest sårbare.
24. oktober 2024
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 :)
Synes godt om
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; } }
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.
Synes godt om
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; } }
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?
Synes godt om
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?
Synes godt om
Slettet bruger
11. oktober 2005 - 17:32#8
Hvis det gør, skal du nok bare skrive: 'if (Key.isDown(Key.w))'
Synes godt om
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
virker! Ved du forresten hvordan man kan lave en tæller, så den der kommer over stregen i f.eks. 3 omgang har vundet...
Synes godt om
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 ++;
Synes godt om
Slettet bruger
11. oktober 2005 - 21:13#12
WHOA!! Undskyld, jeg kom til at trykke 'Dend'!! :(
Synes godt om
Slettet bruger
11. oktober 2005 - 21:13#13
(Dend = Send)
Synes godt om
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...
Synes godt om
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! ;)
Synes godt om
Slettet bruger
11. oktober 2005 - 21:24#16
- Det var svært, hva'?? ;)
Synes godt om
Slettet bruger
13. oktober 2005 - 14:33#17
Virker det?
Synes godt om
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.
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.
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.