Doble salto en Roblox Studio: cómo hacerlo con scripts (Double Jump)

El doble salto es una de las mecánicas más solicitadas por los creadores de experiencias en Roblox, ya que añade dinamismo y fluidez a la jugabilidad. Aunque por defecto Roblox Studio no incluye esta función, implementarla mediante scripts es un proceso sencillo y accesible incluso para desarrolladores con poca experiencia. Dominar esta técnica permite a los jugadores alcanzar plataformas lejanas o esquivar obstáculos de forma más creativa.
En este artículo, te explicaremos paso a paso cómo configurar el doble salto utilizando código Lua dentro de Roblox Studio. Desde la inserción de los objetos necesarios hasta la lógica detrás del conteo de saltos, cubriremos todo lo esencial para que puedas integrarlo en tu propio juego. Al final, tendrás las herramientas para modificar el número de saltos adicionales y adaptarlos a tus necesidades.
Te puede interesar leer: Cómo cambiar el material y la física de los bloques en Roblox Studio (Hielo, Goma)
Todo sobre el doble salto en Roblox Studio

Qué es el doble salto y por qué implementarlo
El doble salto, o double jump en inglés, permite al jugador impulsarse una segunda vez estando en el aire, algo clásico en los juegos de plataformas. Roblox no lo trae de fábrica, así que hay que programarlo, pero el resultado merece la pena: los mapas se vuelven mucho más ágiles y divertidos de recorrer. Es una de esas mecánicas que cambian por completo la sensación de tu juego con muy poco código.
Requisitos previos para crear el script del doble salto
Para seguir esta guía solo necesitas nociones básicas de Luau y saber moverte por el Explorer de Studio. Estos son los tres elementos con los que vas a trabajar durante todo el proceso.
| Componente | Función |
|---|---|
| StarterPlayer | Contiene las configuraciones del jugador |
| StarterCharacterScripts | Almacena los scripts del personaje |
| UserInputService | Detecta las entradas del teclado o el ratón |
Estructura básica del script
Todo el sistema se apoya en un LocalScript que lleva la cuenta de los saltos realizados. Cuando el jugador pulsa espacio, el script comprueba si está en el aire y si aún le quedan saltos disponibles antes de darle el impulso. Al aterrizar, el contador se reinicia automáticamente y todo vuelve a empezar.
¿Cómo funciona el doble salto en Roblox Studio?

Mecánica del salto en el motor físico
Por defecto, Roblox solo deja saltar cuando el personaje pisa el suelo, y esa es justo la limitación que vamos a rodear. La solución no consiste en desactivar nada, sino en detectar el estado del personaje y aplicarle un impulso manual cuando corresponda. Con eso el motor hace el resto.
- Detección del suelo: Comprueba la propiedad FloorMaterial del Humanoid para saber si está pisando algo.
- Segundo salto: Aplica velocidad vertical al HumanoidRootPart mediante AssemblyLinearVelocity.
- Reinicio del contador: Vuelve el contador a cero en cuanto el personaje aterrice de nuevo.
Evento clave para detectar el salto
El evento InputBegan de UserInputService es el que te avisa cuando el jugador pulsa una tecla. Dentro de él filtras que se trate del espacio y compruebas que el evento no venga de un cuadro de texto. Es la puerta de entrada de toda la mecánica.
- Conectar el evento: Enlaza UserInputService.InputBegan desde tu LocalScript del personaje.
- Filtrar la tecla: Comprueba que el KeyCode recibido sea Enum.KeyCode.Space antes de continuar.
- Ignorar la escritura: Usa el parámetro gameProcessed para que no se active mientras el jugador escribe en el chat.
Limitaciones en el número de saltos
Puedes decidir cuántos saltos aéreos permite tu juego, desde uno solo hasta un triple o cuádruple salto. Todo se controla con una variable de límite que comparas antes de aplicar cada impulso. Poner un tope claro evita que nadie vuele indefinidamente por el mapa.
- Variable de límite: Define un máximo de saltos aéreos, normalmente uno para el doble salto clásico.
- Comprobar antes de saltar: Verifica siempre que el contador esté por debajo del límite establecido.
- Cancelar si no procede: Si la condición falla, simplemente no hagas nada y deja que caiga con normalidad.
¿Cuál es el código correcto para el doble salto?

Script local dentro del StarterCharacterScripts
Este es el enfoque más habitual y el que mejor responde, porque el cálculo ocurre en el dispositivo del jugador sin esperar al servidor. Colócalo en StarterCharacterScripts para que se copie automáticamente en cada personaje al reaparecer. La lógica se reduce a contar, comprobar e impulsar.
- Variables iniciales: Crea un contador de saltos y otra variable con el límite máximo permitido.
- Conectar el input: Usa UserInputService.InputBegan para detectar la pulsación de la barra espaciadora.
- Lógica condicional: Si el personaje está en el aire y le quedan saltos, aplícale la velocidad vertical.
Validación en el servidor para mayor seguridad
Como el LocalScript vive en el cliente, alguien con un exploit podría manipularlo para saltar sin límite. Si tu juego es competitivo, conviene que el servidor supervise la mecánica mediante un RemoteEvent. Para juegos casuales el script local basta de sobra.
- Crear un RemoteEvent: Colócalo en ReplicatedStorage para comunicar al cliente con el servidor.
- Validar en el servidor: Comprueba que el jugador realmente esté en el aire y no supere el límite de saltos.
- Aplicar el impulso: Solo tras esa comprobación se modifica la velocidad del personaje.
Errores comunes al escribir el script
Cuando algo no funciona, la consola de Studio suele darte la respuesta al instante. Los fallos más típicos son de sintaxis o de referencias que aún no han cargado cuando el script se ejecuta. Revisar estos tres puntos te ahorra un buen rato de frustración.
- Paréntesis sin cerrar: Un solo paréntesis o end que falte detiene todo el script sin ejecutar nada.
- Referencias vacías: Usa WaitForChild para asegurarte de que el Humanoid ya existe antes de llamarlo.
- Bucles innecesarios: Apóyate en eventos en lugar de bucles constantes que consumen recursos sin motivo.
¿Cómo hacer que el doble salto sea más fluido?

Uso de animaciones personalizadas
Un doble salto sin animación se siente plano aunque funcione perfectamente. Añadir un giro o una voltereta en el segundo impulso le da a tu juego un acabado mucho más pulido. Solo necesitas cargar la animación en el Animator y reproducirla en el momento justo.
- Cargar la animación: Accede al Animator del Humanoid y usa LoadAnimation con el ID de tu animación.
- Reproducir en el momento: Llama al método Play únicamente cuando se ejecute el segundo salto.
- Detener al aterrizar: Para la animación con Stop en cuanto el personaje toque el suelo de nuevo.
Ajuste de la altura y velocidad del salto
La fuerza del segundo salto debería sentirse parecida a la del primero, o incluso algo menor para que resulte natural. Como referencia, el salto normal de Roblox usa un valor cercano a 50, así que por ahí conviene moverse. Prueba varios números hasta que el impulso se sienta cómodo de controlar.
- Modificar el eje Y: Ajusta el componente vertical del vector de velocidad que aplicas al personaje.
- Rango recomendado: Valores entre 40 y 60 dan un salto útil sin lanzar al jugador demasiado alto.
- Contar con la gravedad: Recuerda que la caída empieza a frenar el impulso desde el primer instante.
Pruebas en diferentes plataformas
El doble salto no se comporta igual con teclado que con un botón táctil, así que hay que probarlo en ambos. En móvil, el botón de salto puede tener un ligero retraso que complica encadenar el segundo impulso. Comprobarlo en varios dispositivos asegura que todos disfruten igual.
- Controles táctiles: Verifica en el emulador de móvil que el botón responda sin retrasos perceptibles.
- Teclado físico: Comprueba que ningún otro script esté ocupando ya la barra espaciadora.
- Optimización: Si notas tirones, simplifica la animación o elimina los efectos visuales innecesarios.
¿Qué hacer si el doble salto no funciona?

Revisión básica de errores en la consola
Lo primero siempre es abrir la ventana Output de Studio y buscar mensajes en rojo. Ahí aparecen los errores de sintaxis, las variables mal escritas y las referencias que no existen. Es el diagnóstico más rápido y directo que tienes a mano.
- Errores en Output: Busca mensajes rojos que te indiquen la línea exacta donde falla el código.
- Variables no definidas: Revisa que los nombres coincidan y no haya erratas al escribirlos.
- Script desactivado: Comprueba que la propiedad Disabled esté en false o el script nunca se ejecutará.
Comprobar la configuración del personaje
A veces el código está impecable pero algo bloquea el salto desde las propiedades del jugador. Si otro script desactivó la capacidad de saltar o cambió la altura, tu doble salto no responderá. Revisar la configuración de StarterPlayer descarta esa posibilidad enseguida.
- Salto habilitado: Verifica que el Humanoid tenga activado el estado Jumping y no esté bloqueado.
- Altura del salto: Revisa los valores JumpPower o JumpHeight en la configuración de StarterPlayer.
- Conflicto entre scripts: Asegúrate de que ningún otro código esté modificando el salto por su cuenta.
Mejorar la detección con eventos alternativos
Si InputBegan te da problemas, existen otras formas de saber cuándo el jugador quiere saltar. El propio Humanoid dispone de eventos que avisan de sus cambios de estado, muy útiles para detectar el aterrizaje. Combinar métodos hace tu sistema mucho más fiable.
- Evento StateChanged: Detecta cuándo el Humanoid pasa a Freefall o vuelve al estado Landed.
- Propiedad FloorMaterial: Compruébala para confirmar si el personaje está realmente en el aire.
- Combinar métodos: Une la detección de tecla con el estado del Humanoid para máxima compatibilidad.
Quieres saber sobre este juego
¿Qué es el doble salto en Roblox Studio y cómo funciona con scripts?
El doble salto en Roblox Studio es una mecánica que permite al jugador realizar un segundo salto en el aire antes de tocar el suelo, lo que añade mayor movilidad y dinamismo a tus juegos. Para implementarlo necesitas un LocalScript dentro de StarterPlayerScripts o StarterCharacterScripts, junto con una variable que funcione como contador de los saltos disponibles. El script debe detectar cuándo el jugador pulsa la tecla de salto, comprobar si está en el aire y si aún le quedan saltos, y a continuación aplicar una velocidad vertical modificando AssemblyLinearVelocity del HumanoidRootPart. La clave está en escuchar el evento UserInputService.InputBegan para capturar la entrada del jugador, y en reiniciar el contador cuando el personaje aterriza, algo que se detecta fácilmente con el evento Humanoid.StateChanged o revisando la propiedad FloorMaterial. Este método es ideal porque no requiere sistemas complejos y funciona con cualquier personaje estándar de Roblox.
| Componente | Función |
|---|---|
| LocalScript | Capturar la entrada y ejecutar la lógica |
| Contador de saltos | Controlar cuántos saltos quedan disponibles |
| UserInputService | Detectar la pulsación de la tecla |
| AssemblyLinearVelocity | Aplicar el impulso vertical al personaje |
¿Cómo crear el script de doble salto paso a paso en Roblox Studio?
Para crear el script de doble salto, primero inserta un LocalScript en StarterPlayer y dentro de StarterCharacterScripts. Luego obtén las referencias al Humanoid y al HumanoidRootPart del personaje usando WaitForChild, de modo que el script espere a que ambos existan antes de continuar. Después crea una variable llamada saltos que empiece en 0 y conecta InputBegan para detectar la tecla de salto, que es Enum.KeyCode.Space. Cuando el jugador la pulse, comprueba si el estado del Humanoid es Enum.HumanoidStateType.Freefall y si la variable saltos sigue por debajo de tu límite; si se cumplen ambas condiciones, aplica el impulso con raiz.AssemblyLinearVelocity = Vector3.new(raiz.AssemblyLinearVelocity.X, 50, raiz.AssemblyLinearVelocity.Z). Para reiniciar el contador, conecta Humanoid.StateChanged y devuélvelo a 0 cuando el estado pase a Landed. Es importante no confundirlo con el salto normal: el primer salto lo gestiona Roblox y tu script solo interviene a partir del segundo.
| Paso | Instrucción clave |
|---|---|
| Insertar LocalScript | En StarterCharacterScripts |
| Referenciar el Humanoid | Usar WaitForChild para esperar la carga |
| Evento InputBegan | Detectar Enum.KeyCode.Space |
| Aplicar velocidad | AssemblyLinearVelocity con eje Y en 50 |
¿Qué errores comunes ocurren al implementar doble salto y cómo corregirlos?
Uno de los errores más frecuentes es que el doble salto solo funcione una vez o directamente nunca, y suele deberse a que el contador no se reinicia al aterrizar. Esto pasa cuando no conectas el evento Humanoid.StateChanged o cuando usas un Script normal en lugar de un LocalScript, ya que la detección de teclas solo funciona en el cliente. Otro problema habitual es que el segundo salto se dispare a la vez que el primero: para evitarlo, comprueba que el estado del Humanoid sea Freefall antes de aplicar el impulso, de modo que solo se active si el personaje está realmente en el aire. También es común que el salto se sienta demasiado flojo; si es tu caso, sube el valor vertical hasta rondar los 50, que es la fuerza aproximada de un salto normal en Roblox. Y si el script deja de funcionar tras morir el personaje, asegúrate de volver a obtener las referencias con el evento CharacterAdded, porque el personaje anterior ya no existe.
| Error | Solución |
|---|---|
| No se reinicia el contador | Conectar Humanoid.StateChanged al aterrizar |
| Script en lugar de LocalScript | Cambiarlo a LocalScript |
| Poca fuerza de salto | Subir el valor vertical cerca de 50 |
| Falla tras reaparecer | Volver a referenciar con CharacterAdded |
¿Cómo hacer que el doble salto funcione también en móvil o con un botón específico?
Para que la mecánica funcione en todas las plataformas debes tener en cuenta que en móvil no existe la barra espaciadora, así que el evento InputBegan por sí solo no basta. La solución más limpia es usar ContextActionService con el método BindAction, que te permite asociar una misma función a varias entradas a la vez: la tecla del teclado, un botón del mando y un botón táctil en pantalla. Al activar el parámetro de botón táctil, Roblox genera automáticamente un botón en la interfaz para los jugadores de móvil, sin que tengas que diseñarlo tú. Si prefieres seguir con UserInputService, también puedes escuchar el evento UserInputType.Touch o comprobar con UserInputService.TouchEnabled si el jugador está en un dispositivo táctil para mostrarle un botón propio. Cambiar la tecla en PC es igual de sencillo: basta con sustituir Enum.KeyCode.Space por la que prefieras, aunque conviene evitar las que ya usa el movimiento del personaje.
| Plataforma | Cómo detectarla |
|---|---|
| PC | InputBegan con Enum.KeyCode.Space |
| Móvil | ContextActionService con botón táctil |
| Mando | Asignar Enum.KeyCode.ButtonA |
| Todas a la vez | BindAction agrupando las tres entradas |
Si quieres conocer otros artículos parecidos a Doble salto en Roblox Studio: cómo hacerlo con scripts (Double Jump) puedes visitar la categoría Roblox Studio.
Deja una respuesta

Contenido que te podría interesar