17. december 2005 - 18:56Der er
14 kommentarer og 1 løsning
Spil i ActionScript: Figur bliver kun stoppet af første "væg"
Hej Eksperter...
Jeg har nu endelig besluttet mig for at begynde at programmere i Flash, men er selvfølgelig stødt på et par problemer.
Jeg laver et lille spil, hvor man kan flytte en figur ved brug af piletasterne. Nu indsætter jeg et par vægge, som jeg laver til Movie Clip og giver begge instance navnet "wall".
Min kode er opbygget således: --------------------------------- if (Key.isDown(37)) { if (hitTest(_level0.wall) == false) { _x = _x-5; } if (hitTest(_level0.wall) == true) { _x = _x+5; } } ---------------------------------
Men det er kun den første væg, som stopper min figur!? den anden væg kører den bare lige igennem. Hvorfor?
hm. ok, det frygtede jeg lidt - men har heldigvis ikke så mange vægge i det her spil =)
Hvis du lige opretter et svar, ka' du få point.
Synes godt om
Slettet bruger
18. december 2005 - 08:09#3
Jeg har et forslag: Kald alle vægge for 'wall0', 'wall1', 'wall2', (...) 'walln' (n er altid den sidste i rækken). Brug så denne kode: if (Key.isDown(37)) { i = 0; while (i != n) if (hitTest(_level0["wall"+i]) == false) { _x = _x-5; } if (hitTest(_level0["wall"+i]) == true) { _x = _x+5; } i = i+1; } }
I koden er n antallet af navngivne mure minis en. Jeg håber dette virker!
Synes godt om
Slettet bruger
18. december 2005 - 08:10#4
PS: Den sidste mur skal ikke hedde 'walln'. Det er bare et udtryk.
Synes godt om
Slettet bruger
18. december 2005 - 08:11#5
HOV! '(...) antallet af navngivne mure minis en. (...)' skulle være '(...) antallet af navngivne mure minus en. (...)' !
Med følgende kode kan jeg figuren til at bevæge sig rundt, men han ignorerer alle vægge. Desuden måtte jeg sætte hans bevægelseshastighed ned, for nu bevæger han sig jo en gang for hver væg, der tjekkes. ----------------------------- onClipEvent (enterFrame) { if (Key.isDown(37)) { i = 0; while (i != 7) { if (hitTest(_level0["wall"+i]) == false) { _x = _x-1; } if (hitTest(_level0["wall"+i]) == true) { _x = _x+1; } i = i+1; } } if (Key.isDown(38)) { i = 0; while (i != 7) { if (hitTest(_level0["wall"+i]) == false) { _y = _y-1; } if (hitTest(_level0["wall"+i]) == true) { _y = _y+1; } i = i+1; } } if (Key.isDown(39)) { i = 0; while (i != 7) { if (hitTest(_level0["wall"+i]) == false) { _x = _x+1; } if (hitTest(_level0["wall"+i]) == true) { _x = _x-1; } i = i+1; } } if (Key.isDown(40)) { i = 0; while (i != 7) { if (hitTest(_level0["wall"+i]) == false) { _y = _y+1; } if (hitTest(_level0["wall"+i]) == true) { _y = _y-1; } i = i+1; } } }
Det smarte ved denne kode, som jeg lige har lavet, er, at uanset hvor mange nye mure (eller walls) du sætter ind, vil det hele tiden du. Bare husk at navngiv dem rigtigt, så virker det
Og så er det jo også muligt at ændre hastigheden af din "mand", hvis det var noget :)
Så er det 100% ligegyldigt, om han rykker en nano pixel eller 50 tusinde pixels, hans må bare IKKE (MEGET VIGTIGT) kunne rykke mere end den tundeste vægs tykkelde - har du altså en væg der er 10 px bred, og din mand er 2 px bred, må has maksimale hastighed kun være 12, for at være på den sikre side, så havde jeg sat den til 11 :)
Puha, man burde lave et ordentligt framework til den slags spil en dag - det her er simpelthen noget rod, men desværre den vej, de fleste søger. jeg vender nok tilbage some day ;)
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.