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
¿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
No un problema. Utilizo el babelfish para ayudarme.
bump
¿Te sirvio el codigo que te di?
No trabajó eso bien. No podía encontrar código específico.
nevermind, fixed:
http://forum.bennugd.org/index.php?topic=2942.0