Crear un juego de plataformas 2D con Unity

Tiempo de lectura: 3 minutos

En este tutorial de Unity, te mostraré cómo crear un juego de plataformas 2D simple utilizando el motor de juego Unity. Cubriremos los siguientes temas:

  1. Configuración del proyecto en Unity
  2. Diseño de niveles y obstáculos
  3. Movimiento del jugador
  4. Colisiones y detección de colisiones
  5. Control del juego y puntuación

Comencemos.

  1. Configuración del proyecto en Unity

Primero, abrimos Unity y creamos un nuevo proyecto. En la pantalla de inicio, seleccionamos «Nuevo proyecto» y le damos un nombre a nuestro proyecto. Asegúrate de que la opción «2D» esté seleccionada en la parte inferior derecha de la pantalla. Haz clic en «Crear» y Unity creará el nuevo proyecto.

Una vez que hemos creado nuestro proyecto, podemos comenzar a trabajar en él. En la ventana «Hierarchy», podemos ver los objetos que hemos creado en nuestra escena. En la ventana «Inspector», podemos editar las propiedades de los objetos.

  1. Diseño de niveles y obstáculos

Para crear nuestros niveles, podemos utilizar la herramienta de «Tilemap» de Unity. Esta herramienta nos permite crear una cuadrícula de baldosas y colocarlas en nuestra escena. Podemos seleccionar diferentes tipos de baldosas para crear nuestro nivel, como baldosas de suelo, paredes y obstáculos.

Para crear un obstáculo, podemos utilizar una baldosa con un collider. Un collider es un componente que nos permite detectar colisiones entre objetos. Para crear un collider, podemos hacer clic derecho en nuestra baldosa y seleccionar «Añadir componente» -> «Physics 2D» -> «Box Collider 2D».

  1. Movimiento del jugador

Para crear el movimiento del jugador, podemos utilizar un script de C#. Primero, creamos un nuevo script haciendo clic derecho en nuestra carpeta «Assets» y seleccionando «Crear» -> «C# Script». Le damos un nombre a nuestro script y lo abrimos en el editor de código.

En nuestro script, creamos una variable pública que representa la velocidad del jugador. Luego, en la función «Update», utilizamos la entrada del jugador para mover al jugador a través de la escena.

Aquí hay un ejemplo de código:

public float speed;

void Update()
{
    float horizontalInput = Input.GetAxis("Horizontal");

    transform.Translate(Vector2.right * horizontalInput * speed * Time.deltaTime);
}

En este código, utilizamos la entrada del jugador para obtener la dirección del movimiento horizontal. Luego, utilizamos la función «Translate» de Unity para mover al jugador a lo largo del eje horizontal.

  1. Colisiones y detección de colisiones

Para detectar colisiones entre objetos, podemos utilizar un script de C# y los colliders de los objetos. Primero, agregamos un collider a nuestro jugador y a nuestros obstáculos. Luego, creamos un nuevo script de C# y lo adjuntamos a nuestro jugador.

En nuestro script, utilizamos la función «OnCollisionEnter2D» para detectar colisiones entre el jugador y los obstáculos. Aquí hay un ejemplo de código:

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Obstacle"))
    {
        // Aquí, podemos reiniciar el nivel o reducir la salud del jugador
    }
}

En este código, utilizamos la función «CompareTag» de Unity para detectar si el objeto con el que el jugador ha colisionado es un obstáculo. Si es así, podemos realizar una acción, como reiniciar el nivel o reducir la salud del jugador.

  1. Control del juego y puntuación

Para controlar nuestro juego y llevar la cuenta de la puntuación, podemos utilizar otro script de C#. Primero, creamos un objeto vacío en nuestra escena y lo llamamos «GameController». Luego, creamos un nuevo script de C# y lo adjuntamos a nuestro objeto «GameController».

En nuestro script, utilizamos variables públicas para llevar la cuenta de la puntuación y el estado del juego. Utilizamos la función «OnCollisionEnter2D» para aumentar la puntuación del jugador cuando recoge un objeto. Aquí hay un ejemplo de código:

public int score;
public bool gameOver;

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Collectible"))
    {
        score++;
        Destroy(collision.gameObject);
    }

    if (collision.gameObject.CompareTag("Obstacle"))
    {
        gameOver = true;
    }
}

En este código, utilizamos la función «Destroy» de Unity para destruir el objeto que el jugador ha recogido. Luego, utilizamos una variable booleana para detectar cuando el jugador ha perdido el juego.

Para mostrar la puntuación en la pantalla, podemos utilizar un objeto de texto de Unity y cambiar su contenido en nuestro script. Aquí hay un ejemplo de código:

public Text scoreText;

void Update()
{
    scoreText.text = "Puntuación: " + score;
}

En este código, utilizamos la variable «score» para actualizar el contenido del objeto de texto en la pantalla.

Con estos conceptos básicos, puedes comenzar a crear tu propio juego de plataformas 2D en Unity. Recuerda que el desarrollo de juegos es un proceso continuo y que hay muchas formas de mejorar y expandir tu juego. ¡Diviértete creando!

Deja un comentario