Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: HKaichim en Septiembre 24, 2018, 08:00:18 AM

Título: Saltos precisos y caida "SOLUCIONADO"
Publicado por: HKaichim en Septiembre 24, 2018, 08:00:18 AM
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
Título: Re:Saltos precisos y caida "SOLUCIONADO"
Publicado por: HKaichim en Septiembre 24, 2018, 09:34:37 PM
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
Título: Re:Saltos precisos y caida "SOLUCIONADO"
Publicado por: 3dgeminis en Septiembre 25, 2018, 03:17:39 AM
La idea es tener un nuevo eje (eje z) ademas de los ejes x y, este eje controlara la altura.
(https://i.imgur.com/R6cdF88.png)

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]