Guía paso a paso: Cómo implementar un salto estilo Mega Man 2 en Godot Engine (Salto sostenido)

    En está guía hablaremos sobre como implementar un salto dependiendo el tiempo que el usuario presione la acción de salto en Godot Engine. Dividiré este tutorial en 2 partes, la sección de configuración del personaje y la escena y el código.

Indice


Configuración del personaje y escena

  • Primero vamos a abrir Godot Engine y configurar nuestra escena de pruebas.
  • Importamos nuestros assets y les creamos una carpeta como se muestra en la imagen, esto se hace para tener un mejor orden en nuestro proyecto, en mi caso tengo unos assets que yo mismo hice, pero puedo dejarles un link acá para que puedan descargar unos assets de libre uso.

  • Vamos a generar 2 escenas, esto sirve para organizar los recursos y no tener desordenado el proyecto, es recomendable nombrar las escenas con un prefijo que tú sepas y los de tú equipo sepan que significa cada prefijo, en mi caso lo nombrare de la siguiente forma:
    • Para las escena: es_[nombre de la escena],
    • para el código: gs_[nombre del script de godot]
  • Vamos a añadir un nodo de tipo Node2D en nuestra escena de es_slime, hago esto porque me gusta estructurar de está forma los assets porque si metemos más nodos a nuestro personaje, vamos a querer que este bien estructurado en relación a nuestros nodos.

  • Luego añadiremos otro nodo de tipo AnimatedSprite, esto servirá para colocar nuestro personaje.

  • En el inspector de propiedades creamos un nuevo Sprite Frame y lo abrimos dando doble clic en el sprite frame creado.


  • Se nos abrirá un panel en la parte de abajo.

  • Daremos clic en el botón de añadir fotogramas para importar nuestro SpriteSheet, es importante hacerlo de está forma para no problemas más adelante, también en el caso no tengas un sprite sheet simplemente puedes arrastrar y soltar tu imagen.


  • Se nos abrirá un panel con nuestra imagen y debermos colocar la división que tengamos en nuestro SpriteSheet, en mi caso es 64px de alto por 64px de ancho.

  • Con clic sostenido puedes seleccionar las imágenes que vas a importar a tu animación y luego das clic en añadir fotogramas.

  • Luego añadiremos un KinematicBody2D al árbol de nodos, el KinematicBody2D sirve para aplicar físicas a nuestro personaje.
  • Arrastramos y soltamos nuestro AnimatedSprite dentro del KinematicBody2D.

  • Agregamos un nuevo nodo a nuestro KinematicBody2D de tipo CollisionShape2D, este nodo sirve para que nuestro personaje pueda colisionar con objetos.

  • En el inspector de propiedades añadiremos un CapsuleShape, tu puede añadir el que mejor te convenga y listo, ya tendríamos nuestro personaje configurado por el momento.


  • Ahora procedemos a configurar nuestro TileMap, abrimos la escena de es_tierra y añadimos otro nodo de tipo TileMap.

  • En nuestro panel de propiedades añadiremos un nuevo TileSet.

  • Se nos abrirá un panel en la parte inferior y añadiremos una textura para poder pintar en nuestro juego.

  • Luego damos clic en nuevo tile individual.
  • Después de añadir un Nuevo Tile individual selecciona un bloque y divide la celda dependiendo la necesidad de tu TileSet, en mi caso es 64px de ancho por 64px de alto.

  • Añade una colisión a cada bloque por individual con el botón Collision.
  • Quedará de la siguiente manera

  • Al seleccionar el Nodo de TileMap les aparecerá un panel con los tiles individuales que crearon, esto servirá para dibujar en el juego.

  • Dibujare un pequeño escenario para hacer las pruebas.

  • Nos dirigimos a la escena principal, añadimos un nodo de tipo Node2D y añadimos escenas hijas.

  • El nivel nos quedará de está forma.


Código

  • Abrimos nuevamente la escena de nuestro personaje y añadimos un nuevo script con Kinematic2D seleccionada a nuestra escena.

  • Antes de comenzar a programar, vamos a mapear nuestras teclas para generar la acción en configuración del proyecto.

  • Nos vamos a la pestaña Input Map o Mapa de Entrada.
  • Añadiremos 3 acciones:
    • mover_derecha
    • mover_izquierda
    • saltar
  • Ahora escribirás el siguiente código y testereas tu juego para comprobar que todo está correcto.

extends KinematicBody2D

# Variables publicas al editor
export (int) var velocidadh: int = 200
export (int) var maxVelocidadh: int = 40
export (int) var velocidadCorrerh: int = 25
export (int) var gravedad: int = 10

export (int) var fuerza_salto: int = 400
export (int) var multiplicador_caida = 2
export (int) var fuerza_salto_pequeno_multiplicador = 20
# Definiendo vector de movimiento
var movimiento: Vector2 = Vector2.ZERO

func entradas():
    # Físicas movimiento
    var direccion = int(Input.is_action_pressed("mover_derecha")) - int(Input.is_action_pressed("mover_izquierda"))
    movimiento.x = direccion * velocidadh

    movimiento.y += gravedad
    # Fisicas de salto
    # Jugador está cayendo
    if movimiento.y > 0:
        movimiento += Vector2.UP * (-9.81) * (multiplicador_caida)
    elif movimiento.y < 0 and Input.is_action_just_released("saltar"):
        movimiento += Vector2.UP * (-9.81) * (fuerza_salto_pequeno_multiplicador)

    # Salto normal
    if Input.is_action_pressed("saltar") and is_on_floor():
        movimiento = Vector2.UP * fuerza_salto


# warning-ignore:unused_argument
func _physics_process(delta):
    entradas()
    movimiento = move_and_slide(movimiento, Vector2.UP)

            
    Importante que en la parte de "elif" la acción durante la ejecución del input sea "Input.is_action_just_released".

    ¡Espero que esta información sobre cómo implementar un salto sostenido al estilo de Mega Man 2 en Godot Engine te haya sido útil! Con estas técnicas, podrás añadir un toque de autenticidad a tus proyectos de videojuegos y crear experiencias de salto emocionantes para tus personajes. ¡No dudes en explorar y experimentar con diferentes variaciones y ajustes para lograr el efecto deseado!

Recuerda que la práctica y la paciencia son clave en el desarrollo de videojuegos. ¡Diviértete mientras te sumerges en el fascinante mundo de Godot Engine y crea tus propias obras maestras de salto! Si tienes alguna pregunta o quieres compartir tus logros, no dudes en dejar tus comentarios. ¡Nos vemos en futuras publicaciones llenas de consejos y trucos para seguir mejorando en el desarrollo de videojuegos!


Comentarios

Entradas populares de este blog

Tilesetter y Godot 3.x: Cómo implementar autotile de forma eficiente en tus proyectos de desarrollo de videojuegos

Impulsa tu carrera en el desarrollo de videojuegos con estas herramientas de código abierto

Los pasos clave antes de iniciar el desarrollo de un juego