Loader

Shoutbox

Climb Wall - Caminar por las paredees

Publicado por Mun, Marzo 20, 2020, 10:25:26 PM

Tema anterior - Siguiente tema

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

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!

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.

Octubre 22, 2021, 07:09:33 AM #2 Ultima modificación: Octubre 22, 2021, 07:32:43 AM por Jeffrey Faper
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

[gml]
      //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
      }
}   
[/gml]

Powered by EzPortal