Hola gente, llevo ya varias semanas y no logro poder hacer que mi personaje se cuelgue de una pendiente como en la imagen de abajo.



Veran, mi juego tiene un objeto obj_solid, con el cual se coliciona de forma vertical y horizontal, es decir, lo utilizo como suelo, pared y techo.

Para no perjudicar y producir algun fallo al colicionar con el objeto obj_solid, quiero crear un nuevo objeto y colocarlo en cada una de las esquinas de mi nivel, y si el personaje coliciona con ese borde de la esquina, se quede colgado como en la imagen de arriba.

Vi unos cuantos ejemplos pero todo se vasan en en un único objeto con el que se coliciona con el suelo, pared y colgarse y es frustante porque tengo que cambiar todo el código que me costo mucho adaptarlo para tener una colicion perfecta.

Este vez les dejo mi código del personaje para que se den una idea.

Event create
///Initialize Variables
grav = 0.7;
hsp = 0;
hsp_carry = 0;
vsp = 0;
movespeed = 6;
wspeed=0
jumpspeed_normal = 15;
//jumpspeed_powerup = 10;

jumpspeed = jumpspeed_normal

key_down = 0;


Event steep
//Get the player's input


key_right = keyboard_check(vk_right)
key_left  = -keyboard_check(vk_left);
key_jump  = keyboard_check(vk_space);
key_down  = keyboard_check(vk_down);


//React to inputs
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;

if (place_meeting(x,y+1,obj_wall))
{
   if (key_jump) vsp = -jumpspeed;
}

var hsp_final = hsp + hsp_carry;
hsp_carry = 0;

//Horizontal Collision
if (place_meeting(x+hsp_final,y,obj_wall))
{
    while(!place_meeting(x+sign(hsp_final),y,obj_wall))
    {
        x += sign(hsp_final);
    }
    hsp_final = 0;
    hsp = 0;
}
x += hsp_final;

//Vertical Collision
if (place_meeting(x,y+vsp,obj_wall))
{
    while(!place_meeting(x,y+sign(vsp),obj_wall))
    {
        y += sign(vsp);
    }
    vsp = 0;
}
y += vsp;

Hola buenas.

No soy ningún experto pero quizás te sirva subirle al personaje la 'Densidad' del objeto en las opciones de la física, lo comento porque a mi me paso, era demasiado alta y mi personaje se agarraba a las paredes.

yo seguí este tutorial, quizás te sirva.

https://www.youtube.com/watch?v=xIsQux0FD44

Cita de: carlymx en Diciembre 10, 2014, 11:27:34 PM
Hola buenas.

No soy ningún experto pero quizás te sirva subirle al personaje la 'Densidad' del objeto en las opciones de la física, lo comento porque a mi me paso, era demasiado alta y mi personaje se agarraba a las paredes.

yo seguí este tutorial, quizás te sirva.

https://www.youtube.com/watch?v=xIsQux0FD44

Gracias pero eso no me sirve. Loque quiero como mencione es en caso de saltar y colicionar justo con la pendiente o el borde deuna plataforma, como en la imagen que deje arriba, que el personaje se que quieto colgado. Despues si aprieto la tecla space para saltar pues que salte de donde estaba colgado. Pero la idea de aumentar la dencidad no es buena y lo se por experiencia.


Creo que deberias crear un objeto diferente al obj_wall, llámalo comom quieras. Y al colisionar con este objeto estableces hsp y vsp a 0 hasta que hagas un movimiento o salto...

saludos
Fan de los retro-juegos 2D, arcades, plataformas. Programador. Amiga and MSX fan