Avatar billede michaelsnielsen Nybegynder
25. juli 2002 - 09:56 Der er 7 kommentarer og
1 løsning

hitTest trekant i firkant?

Er det ikke muligt at hitteste på et trekantet objekt??

Jeg kører med en bil på et kort; men hvis jeg rammer den usynlige firkant omkring trekanten så tror den jeg rammer trekanten.

Hvad gør jeg forkert? Trekanten er et movieklip og bilen er et movieklip. Koden er placeret på enterFrame på trekanten og ser således ud:

if (this.hitTest(_root.vehicle))

Der bliver snakket om at bruge et shapeFlag; men syntaxen kræver _x og _y og derved bliver der jo først checket når bilen er i centrum af trekanten?


-Michael
Avatar billede barklund Nybegynder
25. juli 2002 - 11:46 #1
Du laver fire tjek på bilens fire hjørner med shapeflag, hvis et af dem er over trekanten, så er bilen det... Givet den måde, en bil kører, så kan den aldrig komme sidelæns ind over.. eller?

isHit = 0;
xs = [_x-_width/2, _x-_width/2, _x+_width/2, _x+_width/2];
ys = [_y-_height/2, _y-_height/2, _y+_height/2, _y+_height/2];
i = xs.length;
while (i-- && !isHit) {
    isHit = _root.vehicle.hitTest(xs[i],ys[i],1);
}
if (isHit) {
    trace("Bang, du er død");
}


Vil du have flere tjekpunkter (midt på bilens sider fx), så tilføjer du dem blot i arrayet...
Avatar billede michaelsnielsen Nybegynder
25. juli 2002 - 12:42 #2
Hmm, det virker umiddelbaert ikke. For at være sikker lavede jeg et MC med en firkant som jeg drejede som en "rude". Men når jeg trykker på objektet er der en blå streg rundt om ruden. Når jeg kører med bilen over den blå streg (men endnu ikke har ramt objektet) opfattes dette som et Hit..

Det er ikke bilens hjørner der giver mig grå hår i hovedet. Det er objektets hjørner. JEg har set et problem mage til herinde med en person der ville have en doughnout inde i en firkant; men så snart man krydser firkantlinjen tror den at man har nået til dougnouten.

-Michael
Avatar billede barklund Nybegynder
25. juli 2002 - 13:10 #3
Det skal selvfølgelig også være omvendt... Deter jo bilens hjørner, der skal tjekkes... Så prøv:

isHit = 0;
o = _root.vehicle;
xs = [o._x-o._width/2, o._x-o._width/2, o._x+o._width/2, o._x+o._width/2];
ys = [o._y-o._height/2, o._y-o._height/2, o._y+o._height/2, o._y+o._height/2];
i = xs.length;
while (i-- && !isHit) {
    isHit = this.hitTest(xs[i],ys[i],1);
}
if (isHit) {
    trace("Bang, du er død");
}

Virker det så?
Avatar billede michaelsnielsen Nybegynder
25. juli 2002 - 13:27 #4
Yup, det virkede!! Perfekt!. Dog virker det således at bilens center-punkt skal være inde over linjen; men bare det at jeg kan køre over linjen og så først ramme objektet npr jeg er inde på det, er et kæmpe skridt.

Hvordan giver jeg dig point? Der er kun et "kommentar" og et "svar" felt.. Du skal måske oprette et svar?
Avatar billede barklund Nybegynder
25. juli 2002 - 13:34 #5
Jeg har kun lagt kommentarer... Men skal det ikke lige virke "helt", før vi er færdige... må jeg se resultatet, så jeg kan vurdere fejlen? (mail på morten@shockwaved.com eller læg op på server...)
Avatar billede barklund Nybegynder
25. juli 2002 - 16:20 #6
For at gentage mit svar i mailen:

<svar>
Desværre er det MX, som jeg ikke lige har ved hånden her, så jeg kan ikke kigge på det...

Dog vil jeg foreslå dig at rykke kortet under bilen. Som jeg plejer at lave
sådanne bilspil ,så har jeg to versioner af kortet. Et med grafik og en
usynlig version kun indeholdende de "forbudte" områder. (det, der ikke er veje...).

Inden du rykker kortet, så prøver du først at rykke det usynlige kort, og tjekker om bare ét af bilens 4 hjørner kolliderer med dette, hvis det gør, så rykker du det usynlige kort på plads og sætter speed=0 (eller hvad du nu har af hastighedsvariabel), hvis der derimod ikke er kollision, så rykker du også det rigtige kort i den rigtige retning. Det er det nemmeste og kan sagtens køre på en sløv maskine. Se for eksempel games.cr-v.dk under "Wheel deal" - det har jeg lavet på denne måde... Dog stopper den ikke ved kollision, men bremser blot helt ned. Det andet kunne også være lavet...

Dog hvis dit kort er hele københavn, så ville jeg splitte det op i "baner"...
</svar>

/Morten
Avatar billede michaelsnielsen Nybegynder
26. juli 2002 - 09:01 #7
Perfekt! Det vil jeg rode lidt med. Tak for den hurtige respons :)
Avatar billede barklund Nybegynder
26. juli 2002 - 09:12 #8
Anytime :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