En este tutorial aprenderás, paso a paso, cómo hacer que tu personaje de Scratch salte. Repasaremos distintas maneras posibles de implementar el salto, cada una con distintos niveles de complejidad. También nos encargaremos de solucionar algunos errores (bugs) frecuentes que pueden surgir.

Introducción al movimiento en Scratch

En Scratch, los objetos se encuentran en dos dimensiones. Esto quiere decir que sólo pueden moverse hacia arriba/abajo o derecha/izquierda. El movimiento de los objetos en Scratch se gestiona usando los bloques de Movimiento, que se caracterizan por su color azul.

Encontrarás una lista de todos los bloques a la izquierda en la interfaz de Scratch. Primero, asegúrate de tener seleccionada la pestaña Código. Luego, haciendo clic en el icono correspondiente de Movimiento, encontrarás todos los bloques necesarios.

Introducción al movimiento en Scratch

Nivel básico: salto sencillo

Para este salto, vamos a hacer que el perrito (nuestro personaje) suba, pase un momento en el aire, y luego baje.

Para ello haremos uso de los siguientes bloques:

Cómo saltar en Scratch nivel básico

Bloques de evento

En primer lugar, haremos uso del bloque “al presionar tecla […]”. Este bloque pertenece a la categoría de Eventos, que se encargan de detectar cuando algo ocurre (el evento) y así activar la secuencia de bloques a la que está unido.

Para ello, elegiremos una tecla de salto. Al presionar esta tecla, nuestro personaje saltará. En mi caso, voy a utilizar la barra espaciadora, pero tú puedes escoger la tecla que quieras. Incluso puedes utilizar otro bloque de evento si lo prefieres, como por ejemplo “al hacer clic en este objeto”.

Cómo saltar en Scratch nivel básico

Ahora que ya tenemos la manera de activar el salto, es hora de programar el salto en sí. Hay muchas maneras de hacer esto, encontrarás varias en este mismo artículo, pero esta es una de las más sencillas.

Bloques de movimiento

Para hacer que nuestro personaje salte haremos uso del bloque “sumar a Y […]”. Encontrarás este bloque en la sección de Movimiento. En Scratch, la coordenada Y representa arriba y abajo. Los valores positivos de Y representan arriba, mientras que los valores negativos representan abajo.

Cómo saltar en Scratch nivel básico


Este bloque toma las coordenadas de nuestro objeto, es decir, su posición actual, y suma a su coordenada Y una determinada cantidad. A pesar de que el bloque se llama “sumar”, también podemos usarlo para restar. Para ello, basta con introducir un número negativo en la cajita.

Para el salto, queremos que nuestro personaje suba y luego baje. Primero, sumaremos cierta cantidad a Y; luego, le restaremos la misma cantidad, así volverá a la misma altura desde la que saltó. Recuerda: sumar a Y quiere decir subir, mientras que restar a Y quiere decir bajar

Cómo saltar en Scratch nivel básico

Yo he utilizado 30, pero puedes cambiar esta cantidad a tu gusto. Dependiendo del tamaño de tus objetos o de lo alto que quieres que salten, quizá quieras usar un número más pequeño o más grande.

¡Probemos nuestro salto! Basta con pulsar la barra espaciadora (o la tecla que hayas elegido).

Cómo saltar en Scratch nivel básico

Como verás, parece que no funciona. El bloque se ilumina cuando pulsamos espacio, pero el personaje no parece moverse. Veamos cómo podemos arreglarlo. Lo que está ocurriendo es justo lo que hemos indicado que haga el personaje. Primero sube y luego baja. Entonces, ¿por qué no lo vemos moverse?

Bugfixing #1: el personaje no parece moverse

El problema es que el bloque “sumar a Y […]” funciona de forma completamente instantánea. Nuestro personaje se teletransporta hacia arriba en un instante e inmediatamente vuelve a teletransportarse hacia abajo. Es por ésto que no lo vemos moverse. Para arreglarlo, vamos a añadir una pequeña espera entre que sube y baja.

Aquí es donde entra en acción el último bloque que vamos a usar: el bloque “esperar […] segundos”. Este bloque pertenece a la categoría Control y sirve para retrasar la ejecución de los bloques que se colocan debajo. Colocaremos este bloque justo entre el bloque de subida y el bloque de bajada. De este modo, el personaje subirá, esperará un pequeño tiempo, y luego bajará.

Cómo saltar en Scratch nivel básico

¡Ahora sí funciona! Nuestro personaje ya puede saltar. No obstante, al programarlo de esta manera el salto se ve un poco artificial. Veamos cómo podemos hacer que se vea un poco más suave.

Extra: suavizar el salto

El problema es que el movimiento no es progresivo, nuestro personaje se teletransporta arriba y abajo, lo que se ve muy poco realista. Para suavizarlo, vamos a utilizar otro bloque de Control: el bloque “repetir […]”.

Cómo saltar en Scratch nivel básico. Suavizar salto.

Te habrás fijado en tiene una forma un poco rara, distinta de los otros bloques. Esto es porque puedes colocar bloques no solo arriba y abajo, sino dentro de él, así:

Cómo saltar en Scratch nivel básico. Suavizar salto.

Este bloque es un bucle. Lo que hace es repetir lo que haya dentro de él un determinado número de veces. Una vez se haya repetido esa cantidad de veces, pasará al siguiente bloque. En este ejemplo, lo repetirá 3 veces antes de continuar. Cuando se ejecute, primero dirá “¡Hola!” tres veces, y después dirá “¡Adiós”.

Usaremos este bloque para hacer que la animación de salto sea progresiva. En lugar de hacer que nuestro personaje se mueva una gran distancia de golpe, haremos que se mueva una distancia pequeña muchas veces seguidas.

Para ello, colocaremos cada uno de los bloques de movimiento dentro de un bucle “repetir […] veces”. Puedes experimentar con la cantidad de repeticiones, cuantas más pongas, más lento será el salto.

Cómo saltar en Scratch nivel básico. Suavizar salto.

¡Eso se ve mucho mejor! Recuerda disminuir la cantidad en los bloques de movimiento ya que ahora los repite muchas veces, de otro modo tendrás un salto mucho más grande de lo que esperabas. Ahora que utilizamos este método, ya no necesitamos el bloque de esperar, así que lo he quitado.

¡Ya tienes una manera de hacer que tu personaje salte! Si estás interesado en aprender maneras alternativas o algo más avanzadas de programar el salto, continúa leyendo.

Nivel intermedio: salto con gravedad

Para darle un poco más de realismo a nuestro juego, podemos implementar un sistema de físicas que utilice la gravedad. Ésto no solo nos será útil para tener saltos más realistas, sino que también viene muy bien, por ejemplo, para programar el comportamiento de nuestro personaje cuando cae de una plataforma a otra.

Veamos cómo hacerlo.

Explicación física

En primer lugar, un pequeño resumen de lo que vamos a hacer. Como ya sabrás, la gravedad tira hacia abajo de todas las cosas. Esto hace que los objetos que están subiendo (por ejemplo, una pelota lanzada hacia arriba) suban cada vez más lento. Decimos que su velocidad vertical decrece constantemente. 

Cómo saltar en Scratch nivel intermedio. Salto con gravedad.

Llega un momento en el que la gravedad hace que esta velocidad se haga cero, que es en el punto más alto de su trayectoria. Entonces, la velocidad se vuelve negativa y la pelota comienza a bajar cada vez más rápido hasta chocar con el suelo.

Explicación en el código

Vamos a implementar un sistema parecido utilizando dos variables que nos ayudarán a controlar el movimiento (salto y caída) de nuestro personaje. Son las variables VelocidadY y Gravedad.

VelocidadY servirá, como su nombre indica, para establecer la velocidad a la que nuestro personaje debería moverse en el eje Y, es decir, arriba o abajo. Utilizaremos un bucle “para siempre” para mover a nuestro personaje constantemente en base al valor de esta variable. Cuando sea positiva, nuestro personaje se moverá hacia arriba. Cuando se vuelva negativa, se moverá hacia abajo.

Crear una variable

Para crear una variable, dirígete a la sección Variables de la pestaña código. Allí encontrarás el botón Crear una variable, que te permite escoger un nombre. Crearemos primero VelocidadY.

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Crear variable.

Verás aparecer tu nueva variable junto a una pequeña checkbox. Marcar esta cajita sirve para mostrar el valor de la variable en la pantalla del juego. Puedes dejarla marcada por ahora.

Para asegurarnos de que nuestro personaje comienza el juego con velocidad 0, lo estableceremos al iniciarlo con el siguiente bloque. Puedes encontrarlo en la sección Variables:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Crear variable.

Después de eso, utilizaremos un bucle “para siempre” que moverá nuestro personaje en base a VelocidadY. Recuerda, cuando la velocidad sea positiva, se moverá hacia arriba; cuando sea negativa, se moverá hacia abajo.

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Crear variable.

Cómo programar el salto

Ahora mismo, nuestro personaje no se moverá, ya que VelocidadY se mantendrá en 0 desde el principio, y aún no hemos programado ningún bloque que la cambie. Programemos ahora nuestro salto haciendo uso de esta nueva variable:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad.

Cada vez que pulsemos espacio (o la tecla de salto que escojas), esto hará que la VelocidadY de nuestro personaje se haga 5, es decir, comenzará a moverse a esa velocidad hacia arriba (porque usamos un número positivo). Pero esto tiene un problema:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad.

Claro, nuestro personaje se moverá hacia arriba sin parar, porque no hay nada que lo pare. Aquí es donde entra en juego la segunda parte de este sistema: la Gravedad

Cómo programar la gravedad

La variable Gravedad nos servirá para “tirar hacia abajo” de nuestro personaje. Dentro de un bucle “para siempre”, restaremos a la VelocidadY el valor de Gravedad. De este modo, VelocidadY decrecerá constantemente.

En primer lugar, para utilizar Gravedad, tenemos que darle un valor. Lo haremos al iniciar el juego (al clicar la bandera verde), así que podemos usar la misma secuencia de bloques del paso anterior:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

Una vez más, el valor que he usado yo es solo un ejemplo. Puedes experimentar con él y usar el que te parezca más cómodo. Eso sí, asegúrate de hacerlo negativo, ya que tenemos que restarle este valor a la velocidad de nuestro personaje, no sumárselo.

Ahora que ya hemos declarado nuestra Gravedad, hay que añadir el bloque que se la resta a nuestra VelocidadY. Vamos a colocarlo dentro del mismo bucle “para siempre” en el que movemos a nuestro personaje:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

He añadido al bucle el bloque “si toca un borde, rebotar”, para evitar que el personaje se siga hundiendo al llegar al suelo. Probémoslo:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

¡Ya lo tenemos! Como ves, se comporta como la pelota del GIF de antes: al saltar, sube cada vez más lento (su velocidad se está reduciendo), para eventualmente comenzar a bajar caer (su velocidad se vuelve negativa).

Sin embargo, hay un par de problemas:

  • En primer lugar, no hay nada que nos impida saltar mientras estamos en el aire, por lo que nuestro personaje puede saltar sin parar. Esto podría ser intencional, dependiendo del juego, pero para este tutorial vamos a aprender a corregirlo.
  • En segundo lugar, si te fijas en la VelocidadY (arriba a la izquierda), sigue decreciendo sin parar mientras estamos en el suelo. Esto puede plantear a su vez dos problemas:
    • Si después de un rato parado, nuestro personaje cae de una plataforma a otra, lo hará rapidísimo, con toda la velocidad que tiene acumulada.
    • Si la partida dura mucho, la velocidad podría volverse tan grande que procesarla ralentice el juego, o incluso lo rompa.

Bugfixing #1: velocidad en el suelo

La solución a estos dos problemas está algo relacionada: usaremos la detección del suelo para arreglarlos. Usaremos un bloque condicional “si […] entonces  / si no”. Este bloque evalúa una condición; si se cumple, ejecuta una secuencia de bloques; si no se cumple, ejecuta una secuencia distinta.

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

En primer lugar, vamos a hacer que la actualización de la velocidad ocurra sólo cuando no estamos tocando el suelo. Para comprobarlo, utilizaremos el bloque “¿tocando […]?” que puedes encontrar en la sección de Sensores. Colocaremos el código que se encarga de actualizar la velocidad dentro del  si no, que se ejecuta solo si no se cumple la condición (tocar el suelo):

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

El bloque que queremos meter dentro del condicional es el que actualiza la  variable VelocidadY, es importante dejar el que mueve a nuestro personaje (sumar a y) fuera del condicional. 

Lo que necesitamos no es dejar de mover a nuestro personaje. Necesitamos mover a nuestro personaje incluso si toca el suelo, de otro modo no podría despegarse al saltar. Lo que necesitamos es dejar de aplicarle la gravedad.

Esto servirá para que la velocidad deje de aumentar mientras tocamos el suelo, pero la velocidad que teníamos acumulada sigue guardada. Tenemos que encargarnos de reiniciarla a 0 cuando estemos tocando el suelo. Para ello, lo colocaremos dentro de la primera parte del condicional:

Scratch tuto salto

Por el orden en que se actualizan las colisiones, es necesario poner el bloque que mueve nuestro personaje antes del condicional. Si ahora inicias el juego, verás que la velocidad ya no sigue creciendo sin control mientras el personaje está en el suelo:

Scratch cómo saltar

Es posible que veas el valor de VelocidadY oscilando rápidamente entre 0 y un número pequeño. Esto ocurre sólo temporalmente, entre que la velocidad y se actualiza y el juego se da cuenta de que está en el suelo. Pero no te preocupes, esto es solo visual, la velocidad se reinicia a 0 antes de usarla, por lo que el personaje no se moverá.

Ahora que ya hemos solucionado ese problema, pasemos al problema de los saltos en el aire.

Bugfixing #2: saltos en el aire

Para solucionar el problema de saltar en el aire, utilizaremos el mismo condicional, y una nueva variable, PuedeSaltar. Esta variable será de tipo booleana, es decir, almacena un valor binario, de sí (1) o no (0).

La utilizaremos de la siguiente forma: cuando el jugador toque el suelo, haremos que la variable sea 1 (es decir, que pueda saltar). Una vez el jugador salte, la haremos 0, y se mantendrá así hasta que vuelva a tocar el suelo.

Cuando el jugador intente saltar, primero comprobaremos si esta variable es 1 utilizando el bloque Operador =”. Si lo es, le dejaremos saltar. Si no lo es, se lo impediremos. De este modo, solo podrá saltar si ha tocado el suelo desde la última vez que saltó. Es decir, no podrá encadenar saltos.

Modificaremos el código del salto:

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

Resultado final

Cómo saltar en Scratch nivel intermedio. Salto con gravedad. Cómo programar la gravedad.

No importa cuántas veces presione salto en el aire, no me deja saltar hasta haber vuelto al suelo.

¡Espero que te haya gustado el tutorial y nos vemos en el próximo!