Unity, movimiento en 2d, movimiento en 3d, unity scripting, unity en 2d, fondo de pantalla con scrolling, side scrolling

Movimiento de personaje y fondo 2D en unity 2021.

Comparte en redes sociales si te ha gustado este artículo.

Cuando se inicia como desarrollador de videojuegos, lo mas recomendable, es comenzar con proyectos fáciles con scripts pequeños, juegos de plataforma o de naves sencillo, uno de los pasos mas importantes es lograr el movimiento de personaje y fondo 2d en unity con scripts, ya que aprender un nuevo lenguaje de programación es un reto, sin embargo si quieres comenzar este 2021, sigue leyendo que aquí te dare como hacerlo fácilmente.

Si aun no tienes Unity, descargalo gratis desde su página oficial aqui.

fps unity assets, empieza a crear tu propio juego fps ya

Fps unity assets: Crea un shooter en unity en 2022: Empieza a crear un juego FPS en unity con estos excelente recursos que puedes encontrar en la asset store.

Para agregar movimiento a un personaje en 2D hay que tomar en cuenta que primero necesitamos los gráficos, no te preocupes que aquí te dejare los assets necesarios, usaremos un fondo sencillo y una imagen de una aeronave para que lo puedas importar a tu proyecto, así mediante un sencillo script haremos que la aeronave se pueda pilotear sobre un fondo en movimiento con loop infinito, dando la sensación de volar por los cielos.

Empieza este nuevo proyecto en 2021, importemos nuestro fondo y personaje para darle movimiento.

un fondo de scroll automatico en un videojuego 2d es basico en juegos de plataforma, de naves y disparos, con este método podras generar uno fácilmente
Al hacer un Quad puedes ponerle la imagen de fondo que tienes importado desde el inspector por el apartado de shader.

Vamos a iniciar un nuevo proyecto en 2D, vamos a importar las imagenes que vamos a necesitar desde la ventana de project, la imagen de nuestra aeronave, y la imagen de fondo, en la ventana de jerarquía le daremos click derecho a la escena y crearemos un gameObject en 3D, un quad, que usaremos como una «pantalla» para hacer el scroll automático de nuestro fondo, a continuación, daremos click en el quad para que nos aparezcan sus características en el inspector.

En la ventana del inspector del Quad, en la parte mas baja donde pone shader, elegiremos un material, este sera el fondo de pantalla que usaremos, lo que vamos a hacer con el es que, tomando en cuenta que usemos un fondo sencillo azul con algunas nubes, haremos que el fondo haga scroll hacia abajo en un loop infinito, para dar la sensación de que nuestra aeronave esta volando.

Imagen principal del producto Aprende a crear un videojuego RPG en Unity 2019 desde cero.

Curso de unity para creación de juegos RPG: aprende a crear juegos rpg desde cero, con este curso aprenderas a hacer un juego estilo the legend of zelda, crear las acciones, la codificación necesaria, la musica y assets incluidos, aprovecha uno de los cursos mas completos y economicos de unity para la creación de RPGs.

Haciendo nuestro script de movimiento para la imagen de fondo.

Para lograr mover nuestro fondo vamos a hacer un script que sea parte del Quad, asi que en el inspector de las propiedades del quad, da click en agregar componente, escribe script en el cuadro de texto y da click en new script, a este script le pondremos como nombre BgScroll. ahora al hacerlo se debería de abrir la ventana de visual studio, con el contenido de nuestro primer script, normalmente cada script nuevo trae los modulos «start()» y «update()»

En el inspector podemos observar que hay un area para agregar componentes, ahi crearemos nuestro script para generar movimiento a nuestro fondo en 2d.
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;

public class Bgscroll : MonoBehaviour
{
    public float speed = 0;
    void Update()
    {
        GetComponent<Renderer>().material.mainTextureOffset = new Vector2(0f,(Time.time * speed) % 1);
    }
}

Si aun no sabes nada de scripting no te preocupes, vas a ir aprendiendo con la marcha, en unity cada que hacemos un script apareceran esas primeras 4 lineas, que son las librerias, después como puedes ver es el comienzo de nuestro script, que en unity es una clase publica llamada BgScroll, eso tambien nos aparece por default al comenzar nuestro script.

Declarar variables es algo crucial en el scripting de unity.

Uno de los primeros pasos al hacer un script en unity, antes de comenzar a agregar codigo a cualquier función, es la declaración de variables, en este script declararemos la variable «speed», como vez, para publicar una variable, lo haremos de la siguiente manera, generalmente agregaremos primero, «public» o «private», una variable declarada como public puede ser cambiada o usada en otros scripts, un variable private, solo se usa dentro del script donde se declaro.

Ahora, ya sea int (integer) float, bool( boolean) etc, hay muchos tipos de variables que iremos aprendiendo a utilizar, por ahora utilizaremos float que es un tipo de variable numerica con decimales, después de esto escribiremos el nombre de nuestra variable, que en este caso es «speed» y terminamos asignando el valor, que es igual a 0, al final terminamos con punto y coma.

Agregando movimiento a nuestro fondo

Como vez en el código vamos a usar la función update(), ahí agregaremos el movimiento de nuestro fondo, por que con esta función el código se va a efectuar automáticamente cada frame por segundo, entonces, agregaremos la línea siguiente.

public float speed = 0;
    void Update()
    {
        GetComponent<Renderer>().material.mainTextureOffset = new Vector2(0f,(Time.time * speed) % 1);
    }

Con esta línea estamos «tomando» el material que corresponde al Quad, osea nuestro fondo, y le estamos diciendo que cada cierto tiempo lo vamos a trasladar una cierta distancia(mainTextureOffset) hacia el vector «y», a una velocidad fija, con lo cual trasladaremos el material pero no lo veremos desaparecer puesto que no estamos moviendo la imagen, sino trasladando el rendereado de la imagen en el mismo quad.

Puedes agregarle un valor a la variable velocidad para aumentar la velocidad de desplazamiento, como la variable es publica, al guardar el script, vamos a poder manipular el valor de la variable desde el inspector del quad.

En el inspector podremos ver la variable publica speed, del script, para aumentar la velocidad de movimiento de nuestro fondo o personaje.

En el mismo inspector del Quad, vamos a cambiar el offset de el vector «y», que te aconsejo este en el valor 0.025, al manipular este valor tambien podremos ver mas rapido el desplazamiento de nuestro fondo, pero es aconsejable hacerlo con la variable speed, puesto que se logra un movimiento mas suave.

El movimiento del personaje y fondo utilizan scripts sencillas gracias a las librerias de unity.

En este caso, nuestro personaje es una aeronave y aunque tenemos el movimiento del fondo hacia el vector y, trasladándose hacia abajo, tenemos que poder mover nuestra nave alrededor de la pantalla si queremos evitar colisiones o disparos enemigos.

Ya que tenemos importada nuestra nave, para verla en nuestra escena solo arrastra con el cursor el archivo de la imagen hacia la ventana de jerarquía y con esto aparecerá en la escena, ahora en la ventana de jerarquía te aparecera con el nombre del archivo, te recomiendo que le cambies el nombre a playe1, o algun otro que lo identifique, dale click a nuestro personaje en la ventana de jerarquía y vamos al inspector.

A pesar de varios cambios en las versiones de unity este script sigue vigente este 2021 para el movimiento de nuestro personaje.

En el inspector de nuestra nave, vamos a la parte final, al apartado de agregar componente, le agregaremos las propiedades rigid body 2D y box collider 2D y en el apartado de rigid body, en gravity scale le pondremos como valor 0, con esto evitaremos que la nave caiga hacia abajo como si fuera un juego de plataformas, ahora si, damos click en el inspector de nuestro personaje para agregar componente y vamos a crear un script al cual nombraremos «PlayerControl1».

Agrega la nave que representa nuestro personaje principal, para asignarle el script de movimiento en la seccion de añadir complemento.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerController : MonoBehaviour
{
    public float playerspeed = 10f;
    void Update()
    {
        if (Input.GetKey(KeyCode.W))
            transform.Translate(Vector2.up * playerspeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.S))
        transform.Translate(Vector2.down * playerspeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.A))
        transform.Translate(Vector2.left * playerspeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.D))
        transform.Translate(Vector2.right * playerspeed * Time.deltaTime);

    }

Como vez en este script, de nuevo declaramos una variable float llamada playerspeed, le daremos un valor de 10f, y comenzaremos nuestro script dentro de la funcion update.

En esta ocasión usaremos la sentencia «if», con esto nosotros vamos a poner una condición, que al ser cumplida hará que se produzca un resultado, en este caso, comenzamos con la sentencia if, luego entre parentesis la condición que queremos que se cumpla que es «Input.Getkey(KeyCode.W)» osea que estamos esperando que se presione la tecla W para realizar una acción.

Si se cumplio con la condición y se presiono la tecla W, entonces se ejecutara el codigo que sigue a continuación.

transform.Translate(Vector2.left * playerspeed * Time.deltaTime);

En esta línea de código entendemos que «transform.Translate» es la acción que se ejecutara al cumplirse la condición, y se refiere al componente para mover un objeto, en C# los componentes pueden tener varias funciones, y esta función se indica después del punto como si fuera nombre y apellido

Luego declaramos que moveremos el objeto en función de 2 vectores con la ubicación después del punto, en este caso, hacia arriba, a esto se le agregara la velocidad de la variable «playerspeed» que al multiplicarse por la función deltatime hará que el movimiento de nuestra aeronave no sea un movimiento tosco hacia adelante, si no que sea un movimiento suave.

Puedes aumentar o disminuir la velocidad desde el inspector de la nave cambiando el valor de la variable speed, aunque el valor que le puse es el ideal para la velocidad de movimiento en ese tipo de juegos.

Espero que te haya gustado este pequeño curso, seguiremos avanzando poco a poco para poder generar proyectos interesantes, la intención es que como principiante, vayas mejorando tus habilidades y con ello, proyectos en Unity.

Assets utilizados


Aquí te dejo los únicos dos assets que use, la imagen de fondo y la nave, es algo sencillo por que realmente estoy aprendiendo apenas el apartado de diseño, pero te lo dejo para que lo uses si aun no tienes ninguno y empieces a practicar ya.

unity, programas de diseño para videojuegos 2d, programas para imagenes 2d gratis, programas pixel art gratis,

Mejores programas gratis de diseño en 2D y pixel art para tu videojuego en unity. Entra aquí para conocer los programas de diseño mas usados que aparte de tener una muy alta calidad, son gratuitos.


Comparte en redes sociales si te ha gustado este artículo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.