Avatar billede sun Nybegynder
03. april 2008 - 19:51 Der er 4 kommentarer og
1 løsning

Line of sight - flash spil - hexagoner

Jeg er i gang med et spil i flash, som er trunbase, det "brætspil" man spiller på er bygget op af Hexagoner, nogle af dem er plain andre er f.eks. en by hexagon som bloker for line of sight.

Reglen for om der er line of sight er at man skal kunne lave en lige linen fra midten af en hexagone til midten af den man vil skyde på, uden at linen går ind over en f.eks. en by hexagon som bloker line of sight.

Kan sende den fil som bygger mappet op af hexagone, til dem som ikke er helt med.
Har leget lidt med. "hitTest(x, y, true)" men håber der er en anden måde, da jeg ellers skal lade en objcet bevæges sig gennem for at se om den rammer en f.eks. en by hexagon  px for px, og samtide lave et check på alle f.eks. en by hexagon for hver px den har rykke sig.

M.v.h

Johan
Avatar billede sun Nybegynder
04. april 2008 - 14:10 #1
Dette er script jeg har leget med ved brug a hitTest, men det for flash til at gå ned fordi der er ca. 20 puntker i bolckSight[].

onClipEvent (enterFrame) {
    if (_root.attack == true) {
        dist_x = _root.attackArrow._x-_x;
        dist_y = _root.attackArrow._y-_y;
        dist = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
        angle = Math.atan(dist_y/dist_x)/(Math.PI/180);
        if (dist_x<0) {
            angle += 180;
        }
        if (dist_x>=0 && dist_y<0) {
            angle += 360;
        }
        wall_collision = 0;
        for (x=1; x<=dist; x=10) {
            point_x = _x+x*Math.cos(angle*Math.PI/180);
            point_y = _y+x*Math.sin(angle*Math.PI/180);
            for (x in _root.bolckSight) {
                trace("dfdf");
                if (_root[bolckSight[x]].hitTest(point_x, point_y, true)) {
                    wall_collision = 100;
                    break;
                }
            }
        }
        _root.line._x = _x;
        _root.line._y = _y;
        _root.line._rotation = angle;
        _root.line._alpha = 100-wall_collision;
    }
}
Avatar billede sun Nybegynder
04. april 2008 - 14:20 #2
ups!
x=x + 10
Avatar billede sun Nybegynder
04. april 2008 - 17:10 #3
Ok, har lavet det om så der kun er et layer den skal checke. hvis jeg skal bruge hitTest til det?
Avatar billede sun Nybegynder
08. april 2008 - 17:11 #4
Har fået den til at virke, med hittest - men lad denne stå lidt mere open hvis der skulle være en som har en algoritme som virker tiil det.
Avatar billede sun Nybegynder
24. november 2008 - 12:52 #5
går ud fra at den er for svær her og klukker den
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