Avatar billede onkel_satan Nybegynder
17. november 2004 - 19:16 Der er 1 løsning

Actions overlapper hinanden.

Hej eksperter!
Jeg er igang med at lave et lille 2d platform spil hvor en mand kan hoppe rundt på en bane, klatre stiger, køre elvator osv.
Jeg har har så fået et problem med at komme på stige og komme af den igen.
Hvis vi forstiller os et hus med stuen og 1. sal, midt i det hele gaar en stige fra stuen op til 1. sal. For at spillere hurtigt skal kunne komme på stigen holder han (hvis han kommer fra venstre) højre piltast og op piletasten nede, lige så snart at manden er over stien vil han begynde at klatre op af stien. Manden kan altsaa godt løbe horizontalt selvom at op piletasten er trykket nede. Men det samme gælder jo oxo for når han klatre op af stien. Der skal han kunne klatre op selvom piletasten og højre/venstre piletaster nede. Men nu er problemet at han ikke kan komme af da jeg gerne vil bruge de selv samme taster igen til at kunne komme af.
Det hele er bygget om med state maskiner:
// if sætning sænder ham til CLIMBING state
if(chuck_on_stairs == 46 && !(keys == 8 || keys == 16)) {
    jump_timer = 0;
    result = STAIRS;
}

//CLIMBING state
case CLIMBING:
            /* Moves Chuckie verticly, checks for upper and lower stair limit */
            if(!(counter%3)){   
                // Climb up and down the ladders
                if((keys == 4 || keys == 12 || keys == 20) && (left_top == 11 && right_top == 12)){
                               
                    chuck_pos[2] -= 2;
                }else if((keys == 2 || keys == 10 || keys == 18) && (left_ground == 11 || right_ground == 12)){
                   
                    chuck_pos[2] += 2;
                }else
               
                // Walk off ladder ONYL if floor is floor support
                if(left_side_ground == 10 && left_side_low == 50 && (keys == 16 || keys == 18 || keys == 20)  && on_stairs == 1){
                    chuck_pos[1] -= 2;
                    on_stairs = 0;
                }else if(right_side_ground == 10 && right_side_low == 50 && (keys == 8 || keys == 10 ||keys == 12) && on_stairs == 1){
                    on_stairs = 0;
                    chuck_pos[1] += 2;
                }
               
            }           
            break;

Jeg kan simplethen ikke se hvordan jeg kan løse det alle foreslag er velkommen
Avatar billede onkel_satan Nybegynder
18. november 2004 - 11:33 #1
lukker
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
Kurser inden for grundlæggende programmering

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