Noticias

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

* 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: Slopes o rampas, ayuda con 1 linea  (Leído 501 veces)

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

Desconectado jackfefnir

  • Visitante
  • *
  • Puntos: 4
  • Mensajes: 1
    • Ver Perfil
en: Abril 08, 2022, 02:11:23 am
Hola
Eh estado haciendo un proyecto en gm2 pero resultó un problema....
Los slopes son problemáticos y corregirlos implica re hacer todo el código (no sabía que agregar una rampa perjudica tanto, ya que la mayoría de soluciones implica cambiar variables cómo funcionan botones, gravedad, etc)
Encontré una manera "sencilla" que funciona algo bastante bien de bajada pero de subida digamos que ignora el código.
Me gustaría saber en qué parte del código (parte de arriba no logra la ejecución, se que tiene que ver con el eje x pero no logro hacer que baje adecuadamente
El código lo tengo así:
While place_meeting(x,y,rampa) && vspeed >= 0
{ Y-=1}
While place_meeting(x,y+v+1,rampa) && !place_meeting(x,y+2,rampa) && vspeed >= 0
{Y+=1}
Dónde
V= 10
Que es la velocidad del personaje y "rampa" es mi slope, como dije las baja bien pero no las sube solo choca con ellas, no se atora, solo choca, no sube, solo las baja sin importar el lado.
Si alguien puede contestar estaría genial saber en qué falla. Si no pues tendré que re hacer todo

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Jeffrey Faper

Respuesta #1 en: Abril 08, 2022, 06:47:36 am
hacer rampas con while complica mucho las cosas al menos a mi parecer, aqui le dejo un ejemplo de como hacer rampas simples con bucles for es muy simple y es mas facil añadir por ejemplo oneway slopes o ceil slopes, ahora si lo que busca es hacer rampas y loops como los de sonic esto no le servira.
la logica es muy simple si el jugador collisiona contra el lado de un solido verificara si hay pixeles libres para moverse,  si hay espacio libre el jugador  comenzara a subir la rampa,  en cambio si no esta collisionando contra el lado de algun solido y hay espacio libre debajo del jugador, entonces el jugador descendera

repeat(abs(hspd)){
//comprobamos si estamos chocando contra un bloque solido
var block = place_meeting(x+sign(hspd),y,parSolid);
        //Subir  rampa solida
        if(block){
            for(var i=1; i<=maxslp; i++;){
                if(!place_meeting(x+sign(hspd),y-i,parSolid)){
                    y -= i;
                    break;
                    }
                }
            }else{
                    //Descender rampa solida
                    for(var i=maxslp; i>=1; i--;){
                        if(!place_meeting(x+sign(hspd),y+i,parSolid)){
                            if(place_meeting(x+sign(hspd),y+i+1,parSolid)){
                                y += i;
                                break;
                                }
                            }
                        }
                    }
}