Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Temas - Cashka

1
Buenas a todos,

Tengo un grave problema con las plataformas móviles. Cuando tengo mi personaje sobre la plataforma móvil y esta cambia de dirección el personaje se desplaza según la velocidad de la plataforma hacia la dirección contraria e incluso llega a caer de la plataforma. Esto me pasa incluso cuando le añado un "path" a la plataforma.

Llevo varios días intentando solucionar este problema y he consultado el foro pero no he encontrado ninguna solución definitiva y estoy desesperado. Estaría verdaderamente agradecido si alguien pudiese ayudarme con este problema.

Os adjunto el código que he obtenido de un ejemplo en internet:


Create jugador


///Initialize Variables

grav = 0.2;
hsp = 0;
hsp_carry = 0;
vsp = 0;
movespeed = 4;

jumpspeed_normal = 7;

jumpspeed = jumpspeed_normal;


key_down = 0;


Step jugador

//Get the player's input
key_right = keyboard_check (vk_right);
key_left = -keyboard_check (vk_left);
key_jump = keyboard_check_pressed (vk_space);
key_down = keyboard_check (vk_down);

//React to inpuls
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;

Create plataforma móvil

sprite_index = -1;

///Initialize Variables

dir = -1;
movespeed = 3;
hsp = 0;

Step plataforma móvil

mask_index = spr_platform;

hsp = dir * movespeed;

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

if (instance_exists (obj_player))
{
    if (round(obj_player.y + (obj_player.sprite_height/2)) > y) || (obj_player.key_down) mask_index = -1;
    else
    {
   
    mask_index = spr_platform;
    }
    if place_meeting (x, y - 1, obj_player)
    {
        obj_player.hsp_carry = hsp;
    }
   
}

Draw plataforma móvil

draw_sprite(spr_moveplatform,0,x,y);




Gracias por vuestra atención.

P.D. Tengo intención de no utilizar físicas en el juego.