Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: MisterN on January 30, 2012, 06:17:57 PM

Title: ayuda que mejora al jugador
Post by: MisterN on January 30, 2012, 06:17:57 PM
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
Title: Re: ayuda que mejora al jugador
Post by: peterpollito on January 30, 2012, 10:50:07 PM
¿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 (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
Title: Re: ayuda que mejora al jugador
Post by: MisterN on January 31, 2012, 12:14:30 AM
No un problema. Utilizo el babelfish para ayudarme.
Title: Re:ayuda que mejora al jugador
Post by: MisterN on February 03, 2012, 02:31:54 AM
bump
Title: Re:ayuda que mejora al jugador
Post by: peterpollito on February 03, 2012, 12:08:01 PM
¿Te sirvio el codigo que te di?
Title: Re:ayuda que mejora al jugador
Post by: MisterN on February 04, 2012, 05:43:12 PM
No trabajó eso bien. No podía encontrar código específico.
Title: Re:ayuda que mejora al jugador
Post by: MisterN on February 06, 2012, 03:49:43 AM
nevermind, fixed:
http://forum.bennugd.org/index.php?topic=2942.0