¿Eres nuevo en Unity? ¿Quieres aprender a recibir entradas de los jugadores y mover personajes por la pantalla? Creamos esta guía para mostrar tres formas diferentes en las que puedes controlar el movimiento de los jugadores en Unity.

Ya sea que sea nuevo en la codificación o tenga algo de experiencia en su haber, este tutorial de C# lo ayudará a ponerse de pie y a sus personajes a los suyos.

Empecemos.

Movimiento de jugadores en Unity: recopilación de entradas

Lo primero es lo primero, debes saber cómo capturar las entradas del usuario y transformarlas en movimiento en el juego. Unity hace que esto sea bastante fácil siempre que sepa dónde buscar.

Con Unity abierto, haga clic en Editar en la barra de herramientas superior. Ahora seleccione Configuración del proyecto. En la lista de la izquierda, elija Administrador de entrada. Seleccione hachas, rellenando la lista de valores de entrada. Querrás mirar Horizontal y Vertical para el movimiento básico.

Usarás estos ejes junto con Aporte. GetAxisRaw(); para el movimiento básico en la siguiente sección.

instagram viewer

Movimiento del jugador en Unity usando un cuerpo rígido y un colisionador

Ahora que conoce los nombres de los ejes, puede usarlos para controlar el movimiento del jugador.

En tu proyecto de Unity Jerarquía ver, hacer clic con el botón derecho y seleccionar Objeto 3D > Cápsula para crear aquello a lo que le otorgarás movimiento. Asegúrate de usar la misma táctica para crear un suelo. Plano para que su Cápsula se pare.

Asegúrese de restablecer el Transformar valor de ambos objetos, y mueve tu Cápsula para que esté de pie en el Plano. Cambie el nombre de su Cápsula a algo como "Jugador" para una fácil identificación.

Relacionados: Los 5 lenguajes de desarrollo de juegos de Unity: ¿cuáles deberías aprender?

Clickea en el Jugador objeto y, en el Inspector ver, desplácese hacia abajo para Agregar componente. Agrega un Cuerpo rígidoy, a continuación, agregue otro componente como Colisionador de cápsulas esta vez. Necesitará estos componentes para agregar física y, por lo tanto, movimiento a su Jugador.

Luego, haga clic derecho en su Guiones carpeta y Crear un nuevo Guión C#. Asigne un nombre a esta secuencia de comandos similar a "PlayerMovement". Si planea agregar múltiples tipos de movimiento para diferentes personajes o tipos de controlador, querrá crear muchas secuencias de comandos diferentes para cada tipo de movimiento. Por ahora, nos centraremos en lo básico y usaremos un script.

Ver también: ¿Qué es la programación modular en Unity y por qué es importante?

Haga doble clic en su script para abrirlo. Se encontrará con un script de Unity predeterminado:

utilizando el sistema. colecciones;
utilizando el sistema. Colecciones. Genérico;
utilizando UnityEngine;
Clase pública PlayerMovement: MonoBehaviour
{
// Se llama a Start antes de la actualización del primer cuadro
vacío Inicio ()
{

}
// La actualización se llama una vez por marco
actualización nula ()
{

}
}

Puedes eliminar utilizando el sistema. colecciones; y utilizandoSistema. Colecciones. Genérico; ya que no son necesarios para este script.

Con eso fuera del camino, concéntrate en

movimiento de jugador de clase pública: MonoBehaviour {

por ahora. Dentro de la llave de apertura, cree un carroza pública variable nombrada velocidad o algo similar. Esta velocidad variable es un multiplicador que controlará qué tan rápido nuestro Jugador se mueve después de un poco más de programación. Por ahora, establezca velocidad igual a algo como 10f.

También debe informar a Unity que hay un Rigidbody para manipular en este script. Esto se hace con la palabra clave Cuerpo rígido y un nombre de variable, elegiremos rb.

Clase pública PlayerMovement: MonoBehaviour
{
velocidad de flotación pública = 10f; //Controla el multiplicador de velocidad

Cuerpo rígido rb; //Le dice al script que hay un cuerpo rígido, podemos usar la variable rb para hacer referencia a él en otro script

Eso es todo lo que necesita agregar en esta sección. Ahora, pasa a vacío Inicio (). Al iniciar el juego, debe configurar el rb variable igual a la Cuerpo rígido sobre el Jugador al igual que:

vacío Inicio ()
{
rb = ObtenerComponente(); //rb es igual al cuerpo rígido del jugador
}

Ahora, echa un vistazo a la actualización nula () función. Esta es la función que usará para capturar constantemente entradas de los teclados, controladores, etc. de los jugadores. ¿Recuerdas cuando revisaste el Configuración del proyecto por Ejes de entrada? Los usarás aquí.

actualización nula ()
{
float xMove = Entrada. GetAxisRaw("Horizontal"); // la tecla d cambia el valor a 1, una tecla cambia el valor a -1
float zMove = Entrada. GetAxisRaw("Vertical"); // la tecla w cambia el valor a 1, la tecla s cambia el valor a -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocidad; // Crea velocidad en la dirección del valor igual a la pulsación de tecla (WASD). rb.velocity.y se ocupa de caer + saltar al establecer la velocidad en y.

}

No se preocupe si se siente abrumado por el salto en el código; Te lo explicamos paso a paso. Primero, crea un flotador variable con un nombre como xMover, y lo igualamos a Aporte. GetAxisRaw("Horizontal");

Aporte. GetAxisRaw(); es la forma que tiene Unity de registrar las entradas del jugador desde el hachas encontraste en el Configuración del proyecto. Puedes leer más al respecto en Documentación oficial de Unity. "Horizontal" viene del Eje horizontal nombre en la Unidad. Este eje controla el movimiento hacia la izquierda y hacia la derecha con las teclas "a" y "d".

Como probablemente ya puedas adivinar, float zMove = Entrada. GetAxisRaw("Vertical"); hace lo mismo pero para las teclas "w" y "s".

Relacionados: Los mejores tutoriales de Unity 3D para principiantes

A continuación, pondrás eso velocidad variable que creaste en juego y completa la última pieza del rompecabezas para el movimiento del jugador en Unity.

rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocidad; // Crea velocidad en la dirección del valor igual a la pulsación de tecla (WASD). rb.velocity.y se ocupa de caer + saltar al establecer la velocidad en y.

Regresa a Unity's Inspector vista para el Jugador objeto. Echa un vistazo a la Cuerpo rígido-bajo Información, verás un valor Velocidad. Este es el valor con el que está apuntando rb.velocidad.

nuevo Vector3(xMove, rb.velocity.y, zMove) * velocidad, crea un nuevo vector con los valores de x, y y z proporcionados, luego multiplica el valor del vector por velocidad.

Asegúrate de arrastrar el JugadorMovimiento guión en el Jugador objeto en Unity, ¡y eso es todo! En conjunto, tiene un script de C# en funcionamiento que toma las entradas del jugador y las transforma en movimientos de personajes en Unity.

Aquí está el código terminado:

utilizando UnityEngine;
Clase pública PlayerMovement: MonoBehaviour
{
velocidad de flotación pública = 10f; //Controla el multiplicador de velocidad
Cuerpo rígido rb; //Le dice al script que hay un cuerpo rígido, podemos usar la variable rb para hacer referencia a él en otro script

// Se llama a Start antes de la actualización del primer cuadro
vacío Inicio ()
{
rb = ObtenerComponente(); //rb es igual al cuerpo rígido del jugador
}

// La actualización se llama una vez por marco
actualización nula ()
{
float xMove = Entrada. GetAxisRaw("Horizontal"); // la tecla d cambia el valor a 1, una tecla cambia el valor a -1
float zMove = Entrada. GetAxisRaw("Vertical"); // la tecla w cambia el valor a 1, la tecla s cambia el valor a -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * velocidad; // Crea velocidad en la dirección del valor igual a la pulsación de tecla (WASD). rb.velocity.y se ocupa de caer + saltar al establecer la velocidad en y.

}
}

Nota: Si encuentras a tu personaje dando vueltas más que cualquier otra cosa, asegúrate de bloquear la rotación del jugador en el Inspector.

Aprende y gana más en Unity

Ahora que sabe cómo programar el movimiento del jugador en Unity con los componentes Rigidbody y Collider, ¿qué aprenderá a continuación? Tal vez expandir su controlador de movimiento para agregar cosas como deslizamiento, doble salto y más resulte entretenido y atractivo.

Unity Learn está repleto de temas interesantes para mejorar su conjunto de habilidades de desarrollo de juegos. Creemos que uno de los factores más importantes para ampliar tus conocimientos de programación es aprender algo nuevo todos los días. ¡Mantente curioso y feliz pirateando!

Unity Learn es la forma más fácil de dominar el desarrollo de juegos

¿Quieres empezar a desarrollar tus propios juegos? Unity Learn es la mejor y más fácil forma de aprender y dominar lo que necesitas saber.

Leer siguiente

CuotaPíoCorreo electrónico
Temas relacionados
  • Programación
  • Desarrollo de juegos
  • Unidad
  • Programación
Sobre el Autor
Marco Mears III (30 artículos publicados)

Marcus es periodista tecnológico independiente y editor junior de programación en MUO. Es un aprendiz de por vida, desarrollador front-end aficionado y escritor de cuentos con más de 3 años de experiencia en el desarrollo de prosa que mantiene a los lectores informados.

Más Contenido del Marcus Mears III

Suscríbete a nuestro boletín

¡Únase a nuestro boletín para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse