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: AYUDA CON SISTEMA DE PISTONES/MARTILLOS[SOLUCIONADO]  (Leído 526 veces)

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

Desconectado Yoryos

  • Visitante
  • *
  • Puntos: 22
  • Mensajes: 6
    • Ver Perfil
en: Septiembre 19, 2019, 10:57:11 pm
Hola, que tal?

La cosa es que tengo una idea para empezar con un juego pero requiere de una parte donde habrá pistones gigantes que, golpeen el suelo, suban lentamente y trataran de aplastar al personaje, tengo la idea de como activar su caída rápidamente pero no se como devolverlos de a poco a su posición original y repetir la caída. Un ejemplo que tengo es el nivel de "Curious Factory" de Wario Land 4 donde hay un mecanismo así. Agradecería cualquier ayuda
« última modificación: Septiembre 23, 2019, 11:28:42 pm por Yoryos »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Silver_light

Respuesta #1 en: Septiembre 20, 2019, 03:55:58 am
Para lograr ese comportamiento necesitas una variable que controle el estado del objeto. Más bien sería cómo colocar condiciones, si se cumplen pasar de un estado a otro.
Inicialmente deberías crear la variable que controlase el comportamiento, osease, la variable que controla el estado:
Ev_create
estado = -1;
Luego sería definir las constantes que puede tomar la variable estado. En GMS puedes usar enum para enumerar constantes, de momento mantenerlo simple sería lo óptimo, entonces puedes definir nuevas variables simplemente para fines de documentación y para que sea más fácil leer el código:
Ev_create:
//definimos variables auxiliares para darle un valor a estado
ES_ESPERANDO = 0
ES_CAYENDO = 1
ES_SUBIENDO = 2
Estas variables ayudarían a determinar el estado actual del objeto, si está cayendo , si está arriba esperando o si está subiendo para retornar a su posicion.
Finalmente bastaría programar el comportamiento para que cambie de estados, ya dependiendo de cuándo se quiere que ocurran estos eventos.
Por colocar un ejemplo, podíamos hacer que nuestro pistón cayese cuando el personaje se encontrase debajo:
Ev_step:

if (estado == ES_ESPERANDO) //estamos arriba esperando a que pase el jugador
    if (collision_line(x+0,y+0,x+0,y+50, obj_personaje, false, true))//si se detecta que el jugador esta abajo del piston
        estado = ES_CAYENDO; //determinar que está cayendo

if (estado == ES_CAYENDO) //si el estado es cayendo
     vspeed = 2;  //aumentar la velocidad vertical para que caiga
Esto haría que el pistón verifique si el jugador está debajo y cayese en ese caso.
Ahora tocaría hacer que se detuviera cuando colisiona con el suelo, y que subiera, para que al colisionar de nuevo con el techo, por ejemplo, se reestablezca a ES_ESPERANDO.

Para verificar constantemente los estados y el comportamiento estaría bien el evento step, en general. A menos que la lógica no lo requiera XD
   

 
Los siguientes usuarios dieron las gracias a este tema: Yoryos


Desconectado Yoryos

  • Visitante
  • *
  • Puntos: 22
  • Mensajes: 6
    • Ver Perfil
Respuesta #2 en: Septiembre 24, 2019, 08:27:23 am
Gracias :D