Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

* Sponsor

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: Climb Wall - Caminar por las paredees  (Leído 4392 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Mun

  • Visitante
  • *
  • Puntos: 0
  • Mensajes: 1
    • Ver Perfil
en: Marzo 20, 2020, 10:25:26 pm
Buenas, cómo andan? Espero que bien.
Lees cuento, soy nuevo en el desarrollo de videojuegos (vengo del backend en java) y quería saber, cuál es la lógica para hacer que el personaje pueda trepar una pared (megaman- ori -flynn,etc) y a nivel código como hacerlo, porque estuve buscando y no encontré o no entendí como.

Muchas gracias!

 

Desconectado Clamud

Respuesta #1 en: Marzo 22, 2020, 03:03:26 pm
Yo optaría por una máquina de estados (esta forma de programar se menciona muy seguido en el foro). Crea varios bloques de código, uno por cada acción o forma de controlar al personaje, y ejecuta solo uno de los bloques en cada step. Por ejemplo, puedes tener el bloque de código de plataformero normal, en el que actúa la gravedad y no se pega a los bloques. Otro bloque de código sería el de trepar por las paredes, en este código no actúa la gravedad y usa place_meeting para revisar que el personaje está junto a un bloque.

 
Los siguientes usuarios dieron las gracias a este tema: LeipnirStudio

Desconectado Jeffrey Faper

Respuesta #2 en: Octubre 22, 2021, 07:09:33 am
tienes razón hay muy  poca información sobre estos temas de trepar por todos lados con slopes y toda la cosa pero bueno
colisionar con un objeto y trepar es muy sencillo te dejo un ejemplo sobre como se hacen los wall jump de megaman

      //WALL-JUMP-LEFT-SLIDE
     if(!place_meeting(x,y+1,parSolid)  &&  place_meeting(x-1,y,Wall))
{    
     //MEGAMON se deslizara solo si se mantiene la tecla izquierda presionada
     if(keyL){
        vsp = grvspeed/.28;  //si pones la velocidad vertical en 0 megaman no se deslizara..
                //puedes crear un control de velocidad vertical para hacer que escale con las teclas up y down
               //en juegos como ori lo que hacen es ejecutar el mismo codigo de colisiones y gravedad pero a la inversa osea cambian la gravedad
            //cuando ori esta trepando en realidad esta en el suelo numero 2 creo que de esa forma consiguen que haga ceil slopes  tan bonitos
        state = Action.WallSlideL;  //megaman esta en el estado wall sliding left  
       }
     
     //MEGAMON ejecutara un wall jump si el jugador presiona la tecla de salto y esta colisionando contra la pared
     if(place_meeting(x-1,y,Wall) && keyJump){
        vsp =-jmpspeed;           //su velocidad de salto
        hsp = maxspeed*2.2;  //incrementamos la velocidad horizontal para que se aleje de la pared
        jump = 1;        //contador de saltos util para double jump
        state = Action.WallKickingL; //entra al estado wall kick
      }
}  
« Última modificación: Octubre 22, 2021, 07:32:43 am por Jeffrey Faper »

 

 


Warning: Parameter 1 to spoiler_buffer() expected to be a reference, value given in Unknown on line 0

Warning: Parameter 1 to custom_report_ob() expected to be a reference, value given in Unknown on line 0