el problemita es este, ahi donde esta el personaje no se cae es como si aun tuviera el obj_wall debajo x,x
(http://i.imgur.com/sEKBXSZ.png)
// Create event
/// varrrr
grav = 1;
hsp = 0;
vsp = 0;
jumpspeed = 10;
movespeed = 4;
invincible = 0;
// Step event
// Mover
key_right = keyboard_check(vk_right);
key_left = -keyboard_check(vk_left);
key_jump = keyboard_check_pressed(vk_up);
key_down = keyboard_check(vk_down);
//accion
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;
if (place_meeting(x,y+1, obj_wall))
{
vsp = key_jump * -jumpspeed
}
if (key_jump) && (place_meeting(x+1,y,obj_wall) || place_meeting(x-1,y,obj_wall))
{
vsp = -jumpspeed;
audio_play_sound(snd_coin, 1, false);
}
if (key_jump) && (place_meeting(x,y+1,obj_wall))
{
audio_play_sound(snd_coin, 1, false);
}
//colision horizontal
if (place_meeting(x+hsp,y,obj_wall))
{
while(!place_meeting(x+sign(hsp),y,obj_wall))
{
x += sign(hsp);
}
hsp = 0;
}
x += hsp
//colision vertical
if (place_meeting(x,y+vsp,obj_wall))
{
while(!place_meeting(x,y+sign(vsp),obj_wall))
{
y += sign(vsp);
}
vsp = 0;
}
y += vsp;
La máscara de colisión es demasiado grande para el personaje, debes reducirla en la ventana de propiedades de los sprites, o crear un sprite que se use exclusivamente como máscara de colisión, así no tendrás que ajustar los sprites uno por uno.
lo de cambiar la mascara de colision lo he probado, pero en algunos casos como que el sprite atraviesa el bloque, supongo que es por esto que no se ajusta bien para cuando esta viendo a izquierda y derecha:
//Step evento
//animacion
if (move!=0) image_xscale = move;
if (place_meeting(x,y+1,obj_wall))
{
if (move!=0) sprite_index = spr_playerWR; else sprite_index = spr_playerR;
}
else
Y lo de usar un sprite que sirva como colision no se como hacer eso que dices :-X
Si las colisiones cambian al voltear al personaje, entonces la máscara no está bien centrada, revisa con detenimiento los valores en la ventana de propiedades de la máscara, también revisa el origen del sprite.
Para asignar un sprite como máscara de colisión, usa el botón Mask que aparece a la izquierda de la imagen:
(http://docs.yoyogames.com/source/dadiospice/images/form_object.png)
http://docs.yoyogames.com/index.html?page=source%2Fdadiospice%2F000_using%20gamemaker%2F008_defining%20objects.html (http://docs.yoyogames.com/index.html?page=source%2Fdadiospice%2F000_using%20gamemaker%2F008_defining%20objects.html)
A la final opte por quitarle al sprite de personaje la parte de la bandana en la cara que se movia que como daba 5px hacia que su rango de colision sea mas grande, no se si me explique bien :-[ pero era eso
no tienes por qué quitarle la bandana, en el sprite hay un botón para editar su mask, ponle un rectángulo a la medida que prefieras, bien centrado su origin y listo