He intentado seguir los pasos del los tutoriales de Hektor Profe (Youtube), y mas o menos me voy defendiendo y aclarando, poco a poco. En este ultimo, el de la maquina de estados para un juego RPG, no consigo que pase de estado caminando a parado. Cuando para al personaje se queda a image_speed = 0, pero no se queda con el image_index = 0. Otra cosa que tampoco me funciona es el tema de saltar el primer frame de la animación (en el cual coloco la imagen parada del personaje). No se que estoy haciendo mal, realmente he copiado el código directamente. Muchas gracias y un saludo!
Evento Create
[gml]
image_speed = 0
enum ej {
parado = prota_parado,
caminando = prota_caminando
}
dir = "abajo";
estado = ej.parado;
[/gml]
Evento Step
[gml]
//Variables
v = 5;
vh = 0;
vv = 0;
//Deteccion de direccion
vh = (-keyboard_check(vk_left) + keyboard_check(vk_right)) * v;
vv = (-keyboard_check(vk_up) + keyboard_check(vk_down)) * v;
//Colision horizontal
if place_meeting(x+vh,y,obj_cartel) //esta es la colision normal
{ repeat(v)//Este es un bucle "repeat"
{ if !place_meeting(x+sign(vh),y,obj_cartel)// "if !" quiere decir lo contrario
{ x += sign(vh); }
else
{break;}
}
vh = 0 }
//Colision vertical
if place_meeting(x,y+vv,obj_cartel)
{ repeat(v)
{ if !place_meeting(x,y+sign(vv),obj_cartel)
{ y += sign(vv); }
else
{ break; }
}
vv = 0 }
//Detección de dirección
if (vv<0) dir = "arriba";
else if (vv>0) dir = "abajo";
else if (vh<0) dir = "izquierda";
else if (vh>0) dir = "derecha";
//Detección de estado
if (dir != "") estado = ej.caminando;
if (vv == 0 and vh == 0) estado = ej.parado;
x += vh //si esto lo colocamos justo despues de la deteccion de movimiento
//la colision no funciona
y += vv
script_execute(estado)
[/gml]
Y estos serian los dos scripts
prota_parado
image_speed = 0;
iamge_index = 0;
prota_caminando
[gml]
image_speed = 1
if (image_index == 0) image_index++;
switch (dir) {
case "abajo":
sprite_index = spr_prota_abajo;
break;
case "arriba":
sprite_index = spr_prota_arriba;
break;
case "izquierda":
sprite_index = spr_prota_izquierda;
break;
case "derecha":
sprite_index = spr_prota_derecha;
break;
}
[/gml]
Muchas gracias si os tomais la molestia, un saludo!
Estoy usando Game Maker 2
Son bastante malos los tutoriales de hektor profe, para principiantes.
Usa notacion super acoplada y poco intuitivas para los aprendices.
Yo te recomiendo que desaglomerés el programa en algo que sea cómodo, sino pasan cosas como esta: copio todo lo que veo sin entenderlo y ahí esta el problema.
No soy partidario de solucionar problemas de un tuto o de un engine.
Y seguramente suene mala onda pero... mirate el video de nuevo en todo caso.
prota_parado
image_speed = 0;
iamge_index = 0;
image_index lo tienes mal escrito.
Para agregar a lo que dijo Black_Cat, no te quedes con un solo video, busca todo lo que pueda haber sobre un tema.
Cita de: Black_Cat en Marzo 08, 2019, 03:17:30 PM
Son bastante malos los tutoriales de hektor profe, para principiantes.
Usa notacion super acoplada y poco intuitivas para los aprendices.
Yo te recomiendo que desaglomerés el programa en algo que sea cómodo, sino pasan cosas como esta: copio todo lo que veo sin entenderlo y ahí esta el problema.
No soy partidario de solucionar problemas de un tuto o de un engine.
Y seguramente suene mala onda pero... mirate el video de nuevo en todo caso.
Que va, que va, no me suena a mala onda para nada, si has sido súper educado. La verdad es que si que me cuesta un montón seguir los tutoriales, pero mas o menos ya voy entendiendo como va la cosa y después puedo repetir lo mismo sin necesidad de echar mano del tuto. Pero si que es verdad que me falta muchísima base y no tengo nada de vocabulario técnico, y cuando algo me da error o directamente no me sale lo que esperaba, pues me atasco y tal, así que muchas gracias por responder, un saludo!!.
Cita de: 3dgeminis en Marzo 08, 2019, 07:05:17 PM
prota_parado
image_speed = 0;
iamge_index = 0;
image_index lo tienes mal escrito.
Para agregar a lo que dijo Black_Cat, no te quedes con un solo video, busca todo lo que pueda haber sobre un tema.
Muchísimas gracias, era eso mismo. Gracias a esto me acabo de dar cuenta que cuando hay un error de este tipo la palabra no se pone del color que debería. Poco a poco aprendiendo, muchísimas gracias y un saludo!