ayuda que mejora al jugador

Started by MisterN, January 30, 2012, 06:17:57 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

MisterN

moving right:

if (key (_right) or _JKEY_AXIS_X>0)
            flags = 0;
            dir = 1;
            //ii = 0;
            //while (ii <4)
                pixel = map_get_pixel(0, levelmask, levelmap.playerx+12, levelmap.playery); 
                get_rgb (pixel, & red, & green, & blue); 
                if (blue>220 or x==botx)
                //if(col_level or x==topx)
                    //ii = 0;
                    //break; 
                    x-=walk_speed;
                else 
                    if (player_status!=2 and player_status!=3 and player_status!=6 and player_status!=7) player_status=1; end
                    walking=true;
                end   
                //ii = ii + 1;
            //end 
            x+=walk_speed;
        end 


Moving Left:

if (key (_left) or _JKEY_AXIS_X<0)
            flags = 1;
            dir = -1;           
            //ii = 0;
            //while (ii <4) 
                pixel = map_get_pixel(0, levelmask, levelmap.playerx-12, levelmap.playery);   
                get_rgb (pixel, & red, & green, & blue); 
                if (blue>220 or x==topx) 
                //if(col_level or x==topx)
                    //ii = 0;
                    //break; 
                    x+=walk_speed;
                else 
                    if (player_status!=2 and player_status!=3 and player_status!=6 and player_status!=7) player_status=1; end
                    walking=true;
                end               
                //ii = ii + 1; 
            //end
            x-=walk_speed;
        end


Jumping:

if (key (__A) or (joy_getbutton(0,_jkey_a)))
            if(!key_jump_is_already_pressed)
                if(gun_ready)
                    player_status=6;
                    levelmap.player_obj.player_emotion = 2;
                else
                    player_status=2;
                    levelmap.player_obj.player_emotion = 2;
                end
            falling=true;
            pixel = map_get_pixel(0, levelmask, x, y +16);   
            get_rgb (pixel, & red, & green, & blue);   
            if (blue>220)
                play_wav(jump_sound,0);
                fall =- 18;   
            end
            pixel = map_get_pixel(0, levelmask, x+7.5, y +16);   
            get_rgb (pixel, & red, & green, & blue);   
            if (blue>220)
                play_wav(jump_sound,0);
                fall =- 18;   
            end
            pixel = map_get_pixel(0, levelmask, x-7.5, y +16);   
            get_rgb (pixel, & red, & green, & blue);   
            if (blue>220)
                play_wav(jump_sound,0);
                fall =- 18;   
            end
           
        end
            key_jump_is_already_pressed = true;//as long as x is held down, this is true
          else
            key_jump_is_already_pressed = false;//once space is released, this is false
        end


Falling:

ii = fall;   
        if(ii > 0)
            while(ii != 0)
                pixel=map_get_pixel(0, levelmask, x+7.5, y + (fall-ii) +15); //falling onto the left side of the mask
                get_rgb (pixel, & red, & green, & blue); 
                if (blue>0) 
                    ii = ii + 1;
                    falling=false;
                        if(!walking);
                            player_status=0;
                        else
                            player_status=1;
                        end
                    break; 
                end
                pixel=map_get_pixel(0, levelmask, x-7.5, y + (fall-ii) +15); //falling onto the right side of the mask
                get_rgb (pixel, & red, & green, & blue); 
                if (blue>0) 
                    ii = ii + 1;
                    falling=false;
                        if(!walking);
                            player_status=0;
                        else
                            player_status=1;
                        end
                    break; 
                end
                pixel=map_get_pixel(0, levelmask, x, y + (fall-ii) +15); //falling onto the right side of the mask
                get_rgb (pixel, & red, & green, & blue); 
                if (blue>0) 
                    ii = ii + 1;
                    falling=false;
                        if(!walking);
                            player_status=0;
                        else
                            player_status=1;
                        end
                    break; 
                end
                ii = ii - 1; 
            end   
        else   
            ii = 0; 
        end


Ceiling:

if(!on_ground)
            pixel = map_get_pixel(0, levelmask, x+7.5, y-1); //for the far left side
            get_rgb (pixel, & red, & green, & blue);   
                if (blue>0) if (hit_ceiling==false) hit_ceiling = true; else end end
            pixel = map_get_pixel(0, levelmask, x-7.5, y-1); //for the far right side 
            get_rgb (pixel, & red, & green, & blue);   
                if (blue>0) if (hit_ceiling==false) hit_ceiling = true; else end end
            pixel = map_get_pixel(0, levelmask, x, y-1);
            get_rgb (pixel, & red, & green, & blue);   
                if (blue>0) if (hit_ceiling==false) hit_ceiling = true; else end end
        end
        pixel = map_get_pixel(0, levelmask, x+7.5, y-16); //for the far left side
        get_rgb (pixel, & red, & green, & blue);   
            if (blue>0) if (hit_ceiling==false) hit_ceiling = true; else end end
        pixel = map_get_pixel(0, levelmask, x-7.5, y-16); //for the far right side 
        get_rgb (pixel, & red, & green, & blue);   
            if (blue>0) if (hit_ceiling==false) hit_ceiling = true; else end end
        pixel = map_get_pixel(0, levelmask, x, y-16);
        get_rgb (pixel, & red, & green, & blue);   
            if (blue>0) if (hit_ceiling==false) hit_ceiling = true; else end end
       
        if(hit_ceiling==true)
            fall = 3;
            hit_ceiling=false;
        end


Y movement:

// Move the fall until we can.   
        y = y + (fall-ii);
 
        // Acceleration of gravity   
        if (ii == 0)   
            on_ground = false;
            fall = fall + 3; 
            levelmap.player_obj.player_emotion = 3;
            falling=true;
        else
            fall = 0;
            on_ground = true;
        end


*La colisión es terrible. Usted puede ver que ensucié con un cierto código en el movimiento. Me hundiré a veces en la máscara. ¿Cómo se puede este sistema hacer mejor? Gracias
werg

peterpollito

#1
¿Todo eso es para mover al protagonista?
Bueno ya sabeis que yo no suelo poner codigos pero bueno, ahi va un ejemplo que hice en un curso:

No se que mascaras usas o es que le has puesto ese nombre porque si, pero el Block_map_copy y map_get_pixel es lo mejor.
El primero rinde de puta madre aun copiando y borrando durezas de un escenario, en este caso no lo hago pero
para plataformas que se mueven y demas esta bien.

http://dl.dropbox.com/u/16894167/videojuego%200.1.5.rar

Pd: esta en perfecto ESPAÑOL siento decirlo ya que veo que tu idioma nativo es el inglés.

Un saludo

MisterN

No un problema. Utilizo el babelfish para ayudarme.
werg

MisterN

werg


MisterN

No trabajó eso bien. No podía encontrar código específico.
werg