Hola gente, una preguntita.. tengo el tipico comando para hacer saltar a mi personaje . Lo que quiero es que pueda tener 3 saltos con el mismo boton pero distintas alturas , un pequeño saltito , otro mediano y otro alto. El codigo simple que tengo es este:

if keyboard_check_pressed(ord("J")) and not place_free(x,y+1)
{
sound_play(snd_saltar);
vspeed = -11;
}

Bueno eso es todo,gracias y saludos.
¡¡¡Mañana estare mejor que hoy!!!

Si no pones las condiciones de los saltos pues no te podemos ayudar mucho. Supongo que diras algo tipo doble salto (pero con tres xd). Seria algo asi :

EN CREATE:
saltar = 0

EVENTO ARRIBA PRESIONADO (o en step con el IF ese que tienes) :
if saltar = 0 { vspeed -= 10; saltar = 1 }
if saltar = 1 { vspeed -= 20; saltar = 2 }
if saltar = 2 { vspeed -= 30; saltar = 3 }


COLISION CON SUELO
saltar = 0;

En definitiva, lo que hace (o lo que deberia hacer xd) es que si no esta saltando (tocando suelo) pues es 0, si salta y no estaba saltando pues salte corto, si salta pero estaba saltando corto salte mas alto (doble salto) y lo mismo con el tercer salto.

Ya te dijo el de arriba como hacerlo, yo lo hice con doble salto y es casi igual, mira yo lo tengo asi, en el evento click pressed o la letra que quieras pones algo asi:

Lo que quiero imitar es igual que como saltas en SMB1, si lo jugaron sabran a que me refiero con  el tema de los saltos que pega.


if keyboard_check_pressed(ord("J")) and not place_free(x,y+1) /////////Con la J salto.
    {
    sound_play(snd_saltar);
    vspeed = -15;
     }
    if keyboard_check_released(ord("J")) and vspeed < 0
    {
    vspeed = 0;
    }
¡¡¡Mañana estare mejor que hoy!!!

Hola, te refieres a estos saltos?

Link Video.
[spoiler]https://www.youtube.com/watch?v=PYP8k7uQnTU[/spoiler]

Si es así, tu problema va en cuanto tiempo dispone presionada la tecla el usuario, me refiero con una velocidad inicial estándar y si continua presionando la tecla realiza una "especie de vuelo" como un continuando del salto, Claro esta que hay q ponerle una restricción de tiempo para que caiga.

En síntesis.

presionado de tecla:
- por primera vez : su velocidad vertical aumenta a V0 (un valor a elección)
- si continua presionando la tecla, dispone de un apoyo extra de vuelo por intervalos de tiempo pequeños (por step), o sea si continuaría 100 steps seria V0/100 (por ejemplo) para q no se vea muy brusco el vuelo, aunque esto es similar a cuando haces avanzar el personaje horizontalmente (valores pequeños) xD.
- delimitar el tiempo de presionado para q no vuele al infinito.

Lo Anterior seria de la manara más "arcaica" o "a la bruta", Existen métodos de aceleración por medio de física simple para realizar lo que quieres. pues encuentro importante que conozcas bien lo que programes, porque es una parte vital de su personaje.

PD: Que recuerde hay ejemplos (zona de descargas) por esta pagina de doble saltos o saltos continuos o saltos personalizados, una vez (hace años) me topé con algunos.

Saludos.
Fracasar no significa un fin sino un comienzo

#5 Diciembre 03, 2014, 04:03:28 AM Ultima modificación: Diciembre 03, 2014, 04:30:18 AM por Betox
Cita de: Zela en Diciembre 03, 2014, 01:48:29 AM
Hola, te refieres a estos saltos?

Link Video.
[spoiler]https://www.youtube.com/watch?v=PYP8k7uQnTU[/spoiler]

Si es así, tu problema va en cuanto tiempo dispone presionada la tecla el usuario, me refiero con una velocidad inicial estándar y si continua presionando la tecla realiza una "especie de vuelo" como un continuando del salto, Claro esta que hay q ponerle una restricción de tiempo para que caiga.

En síntesis.

presionado de tecla:
- por primera vez : su velocidad vertical aumenta a V0 (un valor a elección)
- si continua presionando la tecla, dispone de un apoyo extra de vuelo por intervalos de tiempo pequeños (por step), o sea si continuaría 100 steps seria V0/100 (por ejemplo) para q no se vea muy brusco el vuelo, aunque esto es similar a cuando haces avanzar el personaje horizontalmente (valores pequeños) xD.
- delimitar el tiempo de presionado para q no vuele al infinito.

Lo Anterior seria de la manara más "arcaica" o "a la bruta", Existen métodos de aceleración por medio de física simple para realizar lo que quieres. pues encuentro importante que conozcas bien lo que programes, porque es una parte vital de su personaje.

PD: Que recuerde hay ejemplos (zona de descargas) por esta pagina de doble saltos o saltos continuos o saltos personalizados, una vez (hace años) me topé con algunos.

Saludos.



Hola, gracias x tu respuesta y a todos los que respondieron. Si, ese video muestra justo de lo que pregunto. La verdad que apenas entiendo el GML, y todo lo que voy logrando es xq me pongo a buscar informacion... y va saliendo lo que voy aprendiendo a duras penas..
Es verdad como dices , el salto me quedo brusco y parece que salta , mete un cabezazo y baja de golpe. intente cambiando la gravedad , la altura del salto... y bue! no m gusta como quedo... aca te dejo el ejecutable del juego para que lo pruebes y si puedes y quieres te paso el editable de GM8.1 por si me quieres ayudar.... Bueno saludos.
¡¡¡Mañana estare mejor que hoy!!!

Hola Betox,

Tal cual como se ve, es muy bruta la caída.

Intentemos algo simple, he notado que el salto Original es con aceleración disminuida dando el efecto que se queda en la cresta del máximo salto.
Eso pasa porque la ecuación de movimiento de proyectil es defectuosa, ¿en que? pues cuando dejas de pulsar el botón de salto el mario Bruscamente se deja de mover verticalmente (vspeed = 0) provocando la caída al instante (dando el efecto bruto). lo único que debes hacer es suavizar la detención.

Pues si dejas pulsado el botón hasta q llega al suelo, el suavizado lo hace el motor de gravedad del objeto, pero no logras lo mismo con saltos pequeños.
En tanto lo único que hay q hacer es suavizar la detención en unos cuantos step's. (pero es complicado a simple vista)

¿Cómo lo logro entonces?

Pues pensemos que al saltar mario "recibe impulso de parte del botón" como si fuese una gravedad hacia el techo hasta q le corresponda. así conseguimos que cuando se suelte el teclado mario no Deva detenerse forzosamente sino que la gravedad del mismo lo realizara (el suavizado), entonces ordenémonos:

- Primera vez q se cliquea la tecla : mario recibe un impulso brusco "vspeed = -15" (para obtener un salto mínimo en caso de pulsar la tecla en un tiempo muy corto)
- si la tecla sigue presionada : le damos el micro impulso , ¿pero COMO? aquí un trukillo, mario en aquel instante dispone de una velocidad vertical determinada (vspeed) la cual aceleraremos pero ¿como se acelera en código?, pues cuando hacemos esto "vspeed += aceleración " ya conseguimos nuestro cometido. (La aceleración es negativa ojo con eso). un punto importante si la aceleración tiene el mismo valor en magnitud negativa que la gravedad delua objeto DEVIESE moverse con velocidad constante hacia el techo, por ende, debes usar valores mayores o iguales a la gravedad del objeto (en negativo). si es mayor dara un efecto de cohete!, en caso de menor un efecto de amortiguamiento por friccion (como subir con peso adicional), hay juégale con los valores.
.- si soltamos la tecla: no hacer nada. Porque la gravedad del objeto realizara el suavizado.

Otra cosilla encontré 2 bug's:
- al comenzar el juego, para matar el monito realice lo siguiente, al momento de saltar y topar al cubo con la flor por debajo y caer sobre el monito, tanto el monito como el mario mueren.

- al jugar con los saltos y movimientos, desde la posición del cubo de abajo de la bandera saltando hacia la pila de cubos en pirámide (dejando presionado el botón de salto y el de moverse horizontal), A veces se queda pillado el mario en la pila de cubos, en algunas ocasiones insalible y otras sale.
Saludos
Fracasar no significa un fin sino un comienzo

Cita de: Zela en Diciembre 03, 2014, 05:27:44 AM
Hola Betox,

Tal cual como se ve, es muy bruta la caída.

Intentemos algo simple, he notado que el salto Original es con aceleración disminuida dando el efecto que se queda en la cresta del máximo salto.
Eso pasa porque la ecuación de movimiento de proyectil es defectuosa, ¿en que? pues cuando dejas de pulsar el botón de salto el mario Bruscamente se deja de mover verticalmente (vspeed = 0) provocando la caída al instante (dando el efecto bruto). lo único que debes hacer es suavizar la detención.

Pues si dejas pulsado el botón hasta q llega al suelo, el suavizado lo hace el motor de gravedad del objeto, pero no logras lo mismo con saltos pequeños.
En tanto lo único que hay q hacer es suavizar la detención en unos cuantos step's. (pero es complicado a simple vista)

¿Cómo lo logro entonces?

Pues pensemos que al saltar mario "recibe impulso de parte del botón" como si fuese una gravedad hacia el techo hasta q le corresponda. así conseguimos que cuando se suelte el teclado mario no Deva detenerse forzosamente sino que la gravedad del mismo lo realizara (el suavizado), entonces ordenémonos:

- Primera vez q se cliquea la tecla : mario recibe un impulso brusco "vspeed = -15" (para obtener un salto mínimo en caso de pulsar la tecla en un tiempo muy corto)
- si la tecla sigue presionada : le damos el micro impulso , ¿pero COMO? aquí un trukillo, mario en aquel instante dispone de una velocidad vertical determinada (vspeed) la cual aceleraremos pero ¿como se acelera en código?, pues cuando hacemos esto "vspeed += aceleración " ya conseguimos nuestro cometido. (La aceleración es negativa ojo con eso). un punto importante si la aceleración tiene el mismo valor en magnitud negativa que la gravedad delua objeto DEVIESE moverse con velocidad constante hacia el techo, por ende, debes usar valores mayores o iguales a la gravedad del objeto (en negativo). si es mayor dara un efecto de cohete!, en caso de menor un efecto de amortiguamiento por friccion (como subir con peso adicional), hay juégale con los valores.
.- si soltamos la tecla: no hacer nada. Porque la gravedad del objeto realizara el suavizado.

Otra cosilla encontré 2 bug's:
- al comenzar el juego, para matar el monito realice lo siguiente, al momento de saltar y topar al cubo con la flor por debajo y caer sobre el monito, tanto el monito como el mario mueren.

- al jugar con los saltos y movimientos, desde la posición del cubo de abajo de la bandera saltando hacia la pila de cubos en pirámide (dejando presionado el botón de salto y el de moverse horizontal), A veces se queda pillado el mario en la pila de cubos, en algunas ocasiones insalible y otras sale.
Saludos



Gracias amigo, muy buena la explicacion... jajaja....... pero no se donde meter todo lo que me explicas. Lo del enemigo se que esta mal , ya que cuando lo piso el enemigo solo cambia de sprite, pero sigue teniendo colision con Mario, entonnces este se muere. No queria crear 2 objetos del enemigo. Uno cuando esta vivo y que cambie x otro objeto cuando sea aplastado y qye no tenga colision con Mario. Lo de quedarse trabado tambien , ya probe cambiando las colisiones de cada sprite , alinie bien cada uno para que al cambiarse las colisiones sean las mismas.. tambien hice un sprite aparte que sea de colision para todo el objeto Mario.. y no logro hacer una colsion que no se quede trabado el Mario.. te puedo pasar el editable a ver si me puedes resolver solo el tema del saltito?-- Saludos.


¡¡¡Mañana estare mejor que hoy!!!

Hola Betox,

Te adjunto un ejemplo, cualquier duda dime.

(esta solo lo elemental y nada optimizado)

Saludos
Fracasar no significa un fin sino un comienzo