Septiembre 24, 2018, 08:00:18 AM Ultima modificación: Septiembre 24, 2018, 09:26:49 PM por HKaichim
Hola amigos :D perdonen el tanto postear y preguntar, pero es que soy remalo para esto de Scripts y bueno a lo que vengo tengo un personaje al estilo 2.5D el cual pelea como algunos de los juegos de la NES "River City Ransom" seria un ejemplo donde el personaje se mueve de arriba hacia abajo en cierta zona, pero que tambien pueda saltar y volver al lugar especifico de la zona donde salto

Bueno no soy un genio, pero lo he solucionado:
Create
globalvar key_caminar;//Control para caminar
key_caminar = true;
globalvar key_saltar;//Control para saltar
key_saltar = true;
globalvar contador;//Control de salto
contador = 20;
globalvar Ccontador;//Control de la variable de salto
Ccontador = false;

Begin Steps
//CONTROLES "WDSA"
if mouse_x>Obj_Player.x{
image_xscale = 1;
if key_caminar = true{
if keyboard_check(ord("D")){
x+=4;
sprite_index = Spr_Player_Right
}
    }
        }
if mouse_x<Obj_Player.x{
image_xscale = -1;
if key_caminar = true{
if keyboard_check(ord("A")){
x-=4;
sprite_index = Spr_Player_Right
}
    }
        }

//Control de salto
if mouse_x>Obj_Player.x{
if key_saltar = true{
if keyboard_check(ord("A")){
key_caminar = false;
key_saltar = false;
sprite_index = Spr_Player_Salto
}
    }
if key_saltar = false{
hspeed = -6;
vspeed = -8;
}
    }
       
if mouse_x<Obj_Player.x{
if key_saltar = true{
if keyboard_check(ord("D")){
key_caminar = false;
key_saltar = false;
sprite_index = Spr_Player_Salto
}
    }
if key_saltar = false{
vspeed = -8;
hspeed = 8;
}
    }


if key_saltar = false{
contador -=1;
}
if contador < 1{
vspeed = +8;
}
if contador < -18{
Ccontador = true;
}
if Ccontador = true{
contador = 21
vspeed = 0;
hspeed = 0;
}
if contador = 21{
key_caminar = true;
key_saltar = true;
Ccontador = false;
}
if contador = 21{
sprite_index = Spr_Player_Stop
contador = 20;
}

Mas o menos con esto a mi me funciono

La idea es tener un nuevo eje (eje z) ademas de los ejes x y, este eje controlara la altura.


Para crear la ilusion de salto se crearan 2 sprites, la sombra que sera la base del jugador y ademas la mascara de colision, y el sprite del personaje que solo estara para representarlo visualmente.
A su vez este nuevo eje z tendra su velocidad (z_vel)
Como el movimiento del eje z sera vertical, se sumara al eje y.
El codigo:
[gml]
/////////////////////////////////////////////////////////////////////////////
///CREATE

z=0
z_vel=0
z_salto=14

/////////////////////////////////////////////////////////////////////////////
///STEP

x+=(keyboard_check(ord("D"))-keyboard_check(ord("A")))*4
y+=(keyboard_check(ord("S"))-keyboard_check(ord("W")))*4

if (keyboard_check_pressed(ord("I")) and z=0) {z_vel=-z_salto}

if z_vel<20 {z_vel+=1}

if (z+z_vel)>=0
    {
     z_vel=0
     z=0
    }
   
z+=z_vel

/////////////////////////////////////////////////////////////////////////////
///DRAW

draw_sprite(spr_sombra, 0, x, y)
draw_sprite(spr_personaje, 0, x, (y+z))

[/gml]