Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Problema con maquina de estados (tutorial Hektor Profe)  (Leído 219 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 131
  • Mensajes: 67
    • Ver Perfil
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
image_speed = 0

   enum ej {
      parado = prota_parado,
      caminando = prota_caminando
      }
     
      dir = "abajo";
      estado = ej.parado;


Evento Step
//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)

Y estos serian los dos scripts

prota_parado

image_speed = 0;
iamge_index = 0;

prota_caminando
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;
    }

Muchas gracias si os tomais la molestia, un saludo!

« última modificación: Marzo 12, 2019, 09:43:50 pm por Johann »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 131
  • Mensajes: 67
    • Ver Perfil
Respuesta #1 en: Marzo 07, 2019, 10:15:08 pm
Estoy usando Game Maker 2

 


Desconectado Black_Cat

  • Ganador CGM Game Jam #1
  • Adicto
  • *
  • Puntos: 715
  • Mensajes: 328
  • Agradecido: 46 veces
  • 🧡🧡🧡🧡🧡
    • Ver Perfil
Respuesta #2 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.

Únete al servidor mas chidori de Discord

 
Los siguientes usuarios dieron las gracias a este tema: NiuWeb, Fashion_Trozos


Desconectado 3dgeminis

Respuesta #3 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.

 
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 131
  • Mensajes: 67
    • Ver Perfil
Respuesta #4 en: Marzo 08, 2019, 10:06:20 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!!.

 


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 131
  • Mensajes: 67
    • Ver Perfil
Respuesta #5 en: Marzo 12, 2019, 02:41:27 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!