certmundo.
es‑mx

6 min de lectura

¿Cómo hacer que un personaje se mueva en tu videojuego?

Para mover un personaje en tu videojuego, necesitas escribir un script en C# que lea las teclas que presiona el jugador y actualice la posición del personaje en cada frame.

¿Alguna vez te preguntaste cuántas líneas de código necesita Mario para caminar? Menos de las que imaginas. En esta lección vas a escribir tu primer script de movimiento desde cero.

La historia de Carlos y su primer personaje inmóvil

Carlos tiene 19 años y vive en Monterrey. Lleva tres semanas aprendiendo Unity en sus ratos libres, después de su turno en una tienda de Liverpool. Creó su escena, colocó su personaje, y lo vio ahí... parado. Sin moverse. Como estatua.

¿Qué le faltaba? Un script. Un script es un archivo de código que le dice a Unity qué debe hacer un objeto. Sin él, tu personaje es solo una imagen bonita.

Carlos abrió Unity, hizo clic derecho en la carpeta "Scripts" y eligió Create > C# Script. Lo llamó "MovimientoJugador". Ese fue su primer paso.

¿Qué es un script y dónde vive?

Un script en Unity es un archivo con extensión .cs. Contiene instrucciones escritas en C#. Unity las ejecuta automáticamente mientras el juego corre.

Cada script tiene dos funciones principales que ya vienen escritas cuando lo creas:

  • Start(): se ejecuta una sola vez, al inicio del juego.
  • Update(): se ejecuta en cada frame, unas 60 veces por segundo.

El movimiento vive en Update(). Ahí es donde preguntas: "¿el jugador presionó alguna tecla?" Si la respuesta es sí, mueves al personaje.

Tu primer script de movimiento

Antes de escribir código, recuerda lo que aprendiste en la lección anterior: cada objeto tiene una posición X e Y. Mover un personaje significa cambiar esos valores continuamente.

Abre tu script "MovimientoJugador" con doble clic. Borra todo y escribe esto:

using UnityEngine;

public class MovimientoJugador : MonoBehaviour
{
    public float velocidad = 5f;

    void Update()
    {
        float movX = Input.GetAxis("Horizontal");
        float movY = Input.GetAxis("Vertical");

        transform.position += new Vector3(movX, movY, 0) * velocidad * Time.deltaTime;
    }
}

Eso es todo. Menos de 15 líneas. Vamos parte por parte.

Qué hace cada línea

public float velocidad = 5f; Esta línea crea una variable llamada velocidad. El número 5f significa 5 unidades por segundo. Al poner public, esta variable aparece en el Inspector de Unity. Puedes cambiarla sin tocar el código.

Input.GetAxis("Horizontal") Esta línea pregunta: "¿el jugador está presionando izquierda o derecha?" Regresa un número entre -1 y 1. Si presionas la flecha derecha, regresa 1. Si presionas izquierda, regresa -1. Si no presionas nada, regresa 0.

Input.GetAxis("Vertical") Hace lo mismo, pero para arriba y abajo.

transform.position += Esto toma la posición actual del personaje y le suma algo. El += significa "agrégale esto a lo que ya tiene".

new Vector3(movX, movY, 0) Crea una dirección de movimiento usando los valores que leyó el teclado. El tercer número es 0 porque en 2D no nos movemos en Z.

* velocidad * Time.deltaTime Multiplica la dirección por la velocidad. Time.deltaTime es el tiempo que pasó desde el último frame. Esto hace que el movimiento sea suave sin importar qué tan rápida sea la computadora del jugador.

Conectar el script al personaje

Escribir el código no es suficiente. Necesitas conectarlo al objeto en tu escena. Así lo hizo Carlos:

  1. Guardó el script con Ctrl + S.
  2. Fue al panel Hierarchy y seleccionó su personaje.
  3. En el Inspector, hizo clic en Add Component.
  4. Escribió "MovimientoJugador" y seleccionó el script.

Dio Play. Su personaje se movió por primera vez. Carlos sonrió tanto que su mamá le preguntó si le había llegado su quincena de Liverpool antes de tiempo.

La historia de Sofía y el personaje que volaba

Sofía tiene 22 años y estudia diseño en la Ciudad de México. Siguió los mismos pasos que Carlos, pero al presionar la flecha derecha, su personaje salió disparado a toda velocidad y desapareció de la pantalla.

¿Qué pasó? Olvidó multiplicar por Time.deltaTime.

Sin Time.deltaTime, el personaje se mueve 5 unidades en cada frame. Si el juego corre a 60 frames por segundo, eso son 300 unidades por segundo. ¡Rapidísimo!

Sofía agregó * Time.deltaTime al final de la línea de movimiento. El personaje se volvió controlable. Ese pequeño multiplicador hace toda la diferencia.

Ajustar la velocidad desde el Inspector

Recuerda que pusimos public antes de velocidad. Eso significa que puedes ajustarla directo en Unity, sin abrir el código.

Selecciona tu personaje en Hierarchy. En el Inspector, busca el componente "MovimientoJugador". Verás el campo Velocidad con el número 5.

Prueba distintos valores:

  • 3: movimiento lento, bueno para juegos de puzzles.
  • 5: movimiento normal, cómodo para la mayoría.
  • 8: movimiento rápido, ideal para juegos de acción.

Esto es muy útil cuando estás ajustando cómo se siente tu juego. No necesitas tocar el código cada vez.

Errores comunes al hacer movimiento

El personaje no se mueve aunque presionas las teclas. Revisa que el script esté conectado al objeto correcto en el Inspector. Muchos principiantes crean el script pero se olvidan de hacer el paso "Add Component".

El personaje se mueve al revés. Si izquierda manda al personaje a la derecha, revisa si por error escribiste -movX en lugar de movX.

El personaje se mueve muy lento o muy rápido. Ajusta el valor de velocidad en el Inspector. Si parece que Time.deltaTime no ayuda, verifica que sí esté escrito al final de la línea de movimiento.

El código da error de compilación. Unity muestra los errores en el panel Console con texto rojo. Lee el mensaje. Casi siempre es un error de ortografía en el código: una letra mayúscula de más, un punto y coma olvidado, o una llave { que no se cerró.

La variable velocidad no aparece en el Inspector. Verifica que escribiste public antes de float. Sin public, Unity no la muestra.

Entender GetAxis: el puente entre el teclado y el juego

Input.GetAxis no solo funciona con las flechas del teclado. También responde a las teclas W, A, S, D, que muchos jugadores prefieren. Unity lo configura así por defecto.

También funciona con controles de videojuego si conectas uno. Tu código no cambia. Unity se encarga de leer el control automáticamente.

Esto es muy práctico. Escribes el código una vez y funciona para teclado y control al mismo tiempo.

Lo que lograste hoy

Escribiste tu primer script funcional. Conectaste código real a un objeto en Unity. Hiciste que algo se moviera por primera vez.

Eso es exactamente lo que hacen los desarrolladores en estudios reales, desde pequeños equipos independientes en Guadalajara hasta equipos más grandes. La diferencia es solo la complejidad del código, no el proceso.

En la siguiente lección vas a aprender a añadir animaciones a ese movimiento. Tu personaje no solo va a caminar, va a verse como que camina.

Resumen práctico

  • Crea un script C# desde Unity con clic derecho en la carpeta Scripts.
  • Escribe el código de movimiento dentro de la función Update().
  • Usa Input.GetAxis para leer las teclas del jugador.
  • Siempre multiplica por Time.deltaTime para que el movimiento sea suave.
  • Conecta el script al personaje usando Add Component en el Inspector.
  • Ajusta la velocidad desde el Inspector sin necesidad de abrir el código.

Puntos clave

  • Un script en C# es el archivo de código que le dice a Unity qué debe hacer tu personaje. Sin él, el personaje no hace nada.
  • La función `Update()` se ejecuta unas 60 veces por segundo. Todo el movimiento va dentro de ella para responder al jugador en tiempo real.
  • Usa `Input.GetAxis("Horizontal")` y `Input.GetAxis("Vertical")` para leer las teclas de movimiento. Funcionan con flechas, WASD y controles de juego al mismo tiempo.
  • Siempre multiplica tu movimiento por `Time.deltaTime`. Sin eso, el personaje se mueve a una velocidad diferente según la computadora de cada jugador.
  • Declara tu variable de velocidad como `public` para poder ajustarla directo en el Inspector de Unity, sin necesidad de editar el código cada vez.

Comparte esta lección:

¿Cómo hacer que un personaje se mueva en tu videojuego? | Desarrollo de Videojuegos Básico | Certmundo