Andrey Martin
Cuando intento instalar el input system me sale este error
Alguien me puede ayudar ? por favor
Controlar el movimiento de un personaje es el primer paso real en cualquier juego, y hacerlo bien desde el inicio marca la diferencia. El New Input System de Unity ofrece una forma robusta y flexible de capturar las acciones del jugador, compatible con múltiples plataformas sin reescribir código. A continuación se explica cómo instalarlo, configurarlo y programar el movimiento básico de un personaje usando Rigidbody y C# scripting.
¿Cómo instalar el New Input System en Unity?
El proceso comienza en Window > Package Manager [0:18]. Dentro del registro de paquetes de Unity, se busca Input System y se presiona Install. Unity descargará e importará todos los assets necesarios. Es muy probable que el editor se reinicie durante la instalación, ya que necesita actualizar componentes internos de su core.
Una vez reiniciado, se accede a Edit > Project Settings y, dentro de Input Manager, aparece una alerta indicando que existe otro sistema de inputs disponible [1:00]. En la pestaña Input System Package se crea un nuevo settings asset con un clic. Las configuraciones por defecto funcionan perfectamente para un proyecto inicial, así que no hace falta modificar nada más.
¿Cómo configurar el Player Input y los Action Maps?
De vuelta en la escena, se selecciona el objeto del personaje y se le cambia el nombre a player [1:30]. Para que este objeto responda a las entradas del jugador, se le agrega el componente Player Input, que se encuentra buscando "player" o "input" en el inspector.
Este componente solicita un Action Input Asset. Como no existe uno, se crea con el botón Create Action [1:52]. Unity genera un archivo que contiene los Action Maps predefinidos:
El Action Map llamado move devuelve un Vector2 con el action type configurado como value y control type como Vector2 [3:20]. Esto significa que se reciben dos números que representan el movimiento horizontal y vertical.
¿Qué es el Behaviour Send Messages?
Dentro del componente Player Input, la propiedad Behaviour se establece en Send Messages [3:00]. Esto hace que Unity envíe mensajes automáticamente al script adjunto cuando detecta una acción. Uno de esos mensajes se llama OnMove, y es el que se usa para capturar el movimiento.
¿Cómo programar el movimiento con Rigidbody y Fixed Update?
Se crea un nuevo script en C# con dos variables float: movementX y movementY [3:40]. Dentro del método OnMove, se recibe un parámetro de tipo InputValue y se extrae un Vector2 con el método Get<Vector2>():
csharp private float movementX; private float movementY;
void OnMove(InputValue movementValue) { Vector2 movementVector = movementValue.Get<Vector2>(); movementX = movementVector.x; movementY = movementVector.y; }
Para aplicar el movimiento se utiliza FixedUpdate en lugar de Update [4:20]. El FixedUpdate es un ciclo de actualización más estable para cálculos de física, especialmente cuando se trabaja con un Rigidbody. La velocidad se asigna directamente:
csharp void FixedUpdate() { rb.velocity = new Vector2(movementX, movementY) * speed; }
¿Qué errores comunes aparecen al configurar el movimiento?
Un error frecuente es olvidar asignar el script al objeto del personaje [4:50]. Al presionar Play y notar que el personaje no responde, se debe verificar que el componente Player Controller esté efectivamente añadido al player.
Otro detalle importante es la gravedad del Rigidbody. Por defecto, el Rigidbody aplica gravedad y el personaje cae. Para un juego tipo avión en 2D, se establece la Gravity Scale en cero [5:15].
Finalmente, se crea una variable pública de tipo entero llamada speed para controlar la velocidad [5:30]. Si se deja en cero, el personaje nunca se moverá porque cualquier valor multiplicado por cero es cero. Un valor inicial de 2 ofrece un movimiento fluido y proporcional al espacio de pantalla disponible.
¿Ya probaste el New Input System en tus proyectos? Comparte tu experiencia y las dificultades que encontraste en los comentarios.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; //Obliga a que quien tenga la script agregada como componente requiera un rigidbody 2D (en este caso) [RequireComponent(typeof(Rigidbody2D))] public class PlayerController : MonoBehaviour { Rigidbody2D rb; public float speed; private float movementX; private float movementY; private void Start() { rb = GetComponent<Rigidbody2D>(); } private void OnMove(InputValue movementValue) { Vector2 movementVector = movementValue.Get<Vector2>(); movementX = movementVector.x; movementY = movementVector.y; } private void FixedUpdate() { rb.velocity = new Vector2(movementX, movementY) * speed; } }
Andrey Martin
Cuando intento instalar el input system me sale este error
Alguien me puede ayudar ? por favor
Cristian David Arroyo Noreña
Al editar el input action me sale este error
Daniel Sanchez
ProfesorMuchas veces es debido a una mala configuración/instalación del Input system, pero buscando rápidamente peude deberse a tener instalado algo llamado vJoy. Cualquiera sea el caso me gustaría ver si en el package manager hay opción de actualziar el paquete o de re instalarlo
Nestor Eduardo Otero
Tengo una consulta: incluyo la linea RequireComponent para solicitar el Rigidbody pero UD Unity la pasa por alto y cuando doy play indica un error por la falta de Rigidbody2D. Lo resuelvo con add component/Rigidbody2 . Por que no se ejecuta el Require?
Daniel Sanchez
ProfesorEl se ejecuta cuando se agrega el script por primera vez en el GameObject, si ya tenías el script en el GO no va a llamarse el require
Nestor Eduardo Otero
Algo que no comprendo: Si escribo el còdigo tal cual està me da el error (The type or namespace name 'Rigidbody2d' could not be found (are you missing a using directive or an assembly reference?)). Me refiere a la linea 14.
Si reemplazo la lìnea 14 por rb = gameObject.GetComponent<Rigidbody2D>(); Me pide que agregue un Rigidbody2D en el inspector. Una vez echo esto funciona bien .
Daniel Sanchez
ProfesorSi puedes enviar un pantallazo serviría demasiado! Posiblemente sea porque Rigidbody2D tiene una D mayúscula, el visual te está dando los autocompletados?
EDISON ALEXANDER GOMEZ TOLOZA
Vidal Angel Contreras Quichca
Muchísimas gracias, era justo lo que buscaba !!