Avatar billede camban Nybegynder
17. marts 2005 - 15:24 Der er 10 kommentarer og
1 løsning

getBounds eller hitTest

Er ved at lave spil. Figuren i spillet styret af keypress må selvfølgelig ikke kunne bevæge sig ud over stage (kanten).
Jeg har prøvet med hitTest mellem figuren og kanten og så sætte moveSpeed til 0 når de hitter hinanden og det virker fint. Figuren bevæger sig ud over men "hænger" tilgengæld fast i kanten og kan ikke komme derfra.
Kan jeg evt. bruge getBounds på en eller anden måde? Eller er der en smartere måde at gøre dette på?
Avatar billede _k Nybegynder
17. marts 2005 - 15:47 #1
Du kan i din hitTest få figuren til at "hoppe" et par pixels ud fra kanten. Det giver faktisk en sjov lille effekt og modvirker at man "hænger fast".
Avatar billede camban Nybegynder
17. marts 2005 - 15:48 #2
Hvordan gør jeg det?
Avatar billede _k Nybegynder
17. marts 2005 - 15:58 #3
hvordan ser din kode/setup ud nu?
Avatar billede camban Nybegynder
17. marts 2005 - 16:01 #4
if (figur.hitTest(wall1)) {
        this.figur.moveSpeed =0;
}

Har lige prøvet med this.figur._x + 3;
men det virker ikke rigtigt. Jeg er rimelig grøn indenfor actionscripts

Vil du have mere af koden?
Avatar billede camban Nybegynder
17. marts 2005 - 16:02 #5
Dette ligger på figur

onClipEvent(load){

moveSpeed=5;
}

onClipEvent (enterFrame) {

if (Key.isDown(Key.RIGHT)) {
            this.gotoAndPlay(2);
            this._x+=moveSpeed;
} else if (Key.isDown(Key.LEFT)) {
            this.gotoAndPlay(3);
            this._x-=moveSpeed;
       
        } else {
        gotoAndStop(1);
}
}
Avatar billede _k Nybegynder
17. marts 2005 - 16:17 #6
Problemet er, at du skal vide hvilken retning figuren kommer fra. Det kan du i princippet finde ud af ved at sætte en variabel som siger det - altså på din figur:

if (Key.isDown(Key.RIGHT)) {
            _root.moveDirection = "right";
            this.gotoAndPlay(2);
            this._x+=moveSpeed;
} else if (Key.isDown(Key.LEFT)) {
            _root.moveDirection = "left";
            this.gotoAndPlay(3);
            this._x-=moveSpeed;
     
        } else {
        gotoAndStop(1);
}

Og i din hitTest tager du så højde for det:

if (figur.hitTest(wall1)) {
        //this.figur.moveSpeed =0;
        if(_root.moveDirection = "rigth") {
          this._x -= 4;
        }
        else if(_root.moveDirection = "left") {
          this._x += 4;
        }
}

"this._x" kan godt tænkes at skulle referere til noget andet?
Avatar billede camban Nybegynder
17. marts 2005 - 16:19 #7
Som jeg siger rimelig grøn på området men jeg lære hele tiden...havde ikke helt fattet den med plusset før lighedstegnet men kan godt se det nu. Det var lidt den tanke jeg også havde.

Jeg prøver lige dit forslag
Avatar billede camban Nybegynder
17. marts 2005 - 16:33 #8
Kan ikke få det til at virke.
Har både lagt hitTest på figuren og i root?
Avatar billede camban Nybegynder
17. marts 2005 - 16:44 #9
Virker nu...bare så dejligt
Tusind tak...smid et svar
Avatar billede _k Nybegynder
17. marts 2005 - 17:23 #10
kanon :o)
Avatar billede _k Nybegynder
17. marts 2005 - 20:41 #11
takker for point :o)
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