El siguiente es un ejemplo de como podemos aplicar la implementación del movimiento que aparece descrita en la documentación de CharacterController ( https://docs.unity3d.com/ScriptReference/CharacterController.Move.html ) con el nuevo packete de Input System.
El ejemplo descrito aquí puede ser descargado desde el repositorio publico en la URL: https://github.com/montblack/SamplesProject
1. Instalar el paquete Input System:
En el edito de Unity3D abrir Window > Package Manager y en esta ruta habilitar el paquete Input System
2. Crear la configuración de los controles
Dentro de los assets crea un nuevo elemento de tipo Input Actions
3. Configura el personaje
A tu personaje agrégale un componente de tipo CharacterController, configúralo de acuerdo a tu personaje, ten en cuenta que una configuración errónea puede afectar el funcionamiento del movimiento o salto, en nuestro ejercicio usamos una capsula muy sencilla y modificamos la propiedad Min Move Distance a 0 para detecte correctamente si esta tocando el suelo.
Crea un script con el nombre que desees y agrégalo como componente al personaje, el script descrito a continuación lo puedes encontrar aqui: https://github.com/montblack/SamplesProject/blob/main/Assets/Scripts/NewInputMovementPlayerController.cs
- Método OnMove, Aqui leemos el valor de la entrada y lo asignamos a la variable move, este contiene los ejes x,y que el jugador ha presionado
- Método OnJump, aqui calcularémos la variable playerVelocity la cual solo usamos el eje y ya que nos interesa solo calcular la velocidad vertical o de "salto", para ello verificamos que el personaje este tocando el suelo y que la tecla haya sido presionado, esto es importante porque el método también detecta cuando la tecla es soltada; luego hacemos un cálculo de la gravedad (gravityValue) y el alto del salto (jumpHeight) para calcular la altura máxima y movemos al personaje teniendo en cuenta el delta del tiempo.
- Por ultimo en el método Update usamos las variables de movimientos anteriormente calculadas para colocar la velocidad en y como cero si el personaje está tocando el suelo, luego movernos en la dirección calculada y por ultimo calcular cuando desciende del aire el personaje de acuerdo a la velocidad de la gravedad
Comentarios
Publicar un comentario