TEMA 4 INPUTS Y CONTROLADORES DEL PERSONAJE (continuación)

Sin valoraciones

Ahora deberemos añadir las dependencias públicas para que el personaje lo podamos mover en nuestra escena.

Por lo que lo primero Añadiremos tres componentes a nuestro objeto Player que son los tres scripts que hemos creado. Después deberemos arrastrar la información del animator, el sprite a los huecos vacios que aparecen en cada script tal y como se ve a continuación:

Otra cosa importante para que nuestro objeto no le ocurra que cuando choque con algún objeto de la escena este cambie su rotación y pierda el control es que tenemos que irnos a la pestaña del inspector, una vez señalado el objeto Player, y en la opción Constrains que tenemos dentro del componente Rigidbody hay que congelar la Rotación en el eje de las z. Juego

Para que de esta manera no pierda el control y se caiga por todo nuestro escenario y funcione incorrectamente.

Con esto ya tendríamos nuestro personaje para que se mueva por todo el escenario. Ahora vamos a definir el comportamiento de nuestro Player y sus colisiones.

Lo primero que haremos será irnos a la pestaña Layer y crear dos nuevas layers una llamada Wall y otra Player.

Nos venimos al objeto Player y le decimos que su layer es Player

Nos dirá si queremos que todos los objetos que tiene el Player queremos que tengan la layer de Player y le decimos que no.

Nos vamos a Collisions y ahí si que añadimos nuevamente la layer de Player.

Ahora dentro de los prefabs que tenemos vamos a decirles que la layer que tienen que usar dentro de su objeto collision sea Wall

Haremos lo mismo para nuestros objetos TreeBlue y TreeRed que se encuentran dentro de la carpeta de prefabs de nuestro proyecto.

Juego

Abrimos la pestaña de Projects Settings desde el menu Edit y modificaremos el apartado de las Físicas 2D. Nos centramos en la sección inferior donde se ven una serie de checkbox que corres­ponden a la interacción entre las diferentes layers de nuestros objetos.

El siguiente paso es hacer posible que haya colliders dentro del Tilemap y eso lo hacemos posible gracias a que habíamos creado antes un tilemap llamado collisións aquí pintare­mos lo que hará que nuestro personaje colisione con los objetos del tilemap.

Para ello debemos abrir el sprite que pertenece el tilemap de Walkable que se encuentra en la carpeta de Sprite>Environment>atlas y abrir su spriteEditor

Lo que vamos a hacer es dar a cada uno de estos tiles(dibujos) que constituyen nuestro sprite, una serie de físicas o colliders que harán que nuestro personaje pueda chocar con ellos. Dese la opción de Sprite editor seleccionamos Custom Physics Shape.

A continuación debemos definir cuatro colliders dentro del siguiente sprite que van a ser los cuatro con los que vamos a hacer que nuestro personaje pueda chocar con estos ele­mentos dentro del mapa. Con solo definirlos en uno de nuestros objetos podemos extra­polarlos al resto de objetos que usaremos de nuestro tilemap walkable.

Para ello seleccionamos el botón Snap y posteriormente al botón Generate. Al hacerlo nos aparecerán unos nodos que recortan nuestro objeto.

Juego

Tenemos que mover dichos nodos hasta que tengamos una sección rectangular que cubra la parte superior central de nuestra verja. Es decir crear cuatro mitades como se ven en las figuras 2, 3, 4 y 5.

Una vez definidos estos cuatro tiles, pulsamos dentro de Apply y los probamos dentro de nuestro escenario.

Seleccionamos el objeto Collisions que se encuentra dentro de Grid y desde el inspector le asignamos la layer wall

Le añadimos el collider de tipo Tilemap

Le añadimos un Composite collider

Nos vamos a Rigidbody y le decimos que sea estático

Y dentro del componente Tilemap le tenemos que decir que el an­cho del tile en el eje y sea 0 para que esté alineado con los tiles que pertenecen al tilemap de Walkable. Ya que nosotros lo que estamos pintando son colliders para dichos elementos.

Ahora para poder pintar estos Colliders en nuestros objetos debere­mos seleccionar desde la ventana de Jerarquía el objeto Collisions y desde el tilepalette seleccionamos aquellos tiles que hemos hecho que tengan esas arear de colisión.

Nos colocamos encima de cualquiera de nuestros tiles y se creara ese collider dentro de nuestro tile o sprite que forma nuestro tilemapJuego

Importante deberemos pintar un Collider alrededor del escenario, porque si no nuestro personaje podría salir de él.

 

 

La gestión de inputs y controladores de personajes en Unity puede realizarse de varias formas:

1. Configurar Inputs en Unity:

1.1. Ir a Edit -> Project Settings -> Input Manager:

  • Define los inputs que necesitarás para tu juego.
  • Puedes agregar nuevos botones y asignarles nombres significativos.

2. Crear un Script de Controlador de Personaje:

2.1. Crear Script de Controlador de Personaje:

  • Crea un nuevo script llamado ControladorPersonaje.
csharp
using UnityEngine; public class ControladorPersonaje : MonoBehaviour { public floatvelocidad = 5f; public float velocidadRotacion = 200f; void Update() { MoverPersonaje(); RotarPersonaje(); } void MoverPersonaje() { float movimientoVertical = Input.GetAxis("Vertical"); float movimientoHorizontal = Input.GetAxis("Horizontal"); Vector3 movimiento = new Vector3(movimientoHorizontal, 0f, movimientoVertical) * velocidad * Time.deltaTime; transform.Translate(movimiento, Space.Self); } voidRotarPersonaje() { float rotacion = Input.GetAxis("Horizontal") * velocidadRotacion * Time.deltaTime; transform.Rotate(Vector3.up, rotacion); } }

3. Asociar el Script al Personaje:

3.1. Asociar el Script:

  • Asocia el script ControladorPersonaje al GameObject del personaje en el Inspector.

4. Ajustar Parámetros del Personaje:

4.1. Ajustar Parámetros:

  • En el Inspector, ajusta la velocidad y velocidad de rotación según tus necesidades.

5. Ejemplo de Controlador de Cámara (Opcional):

5.1. Controlador de Cámara:

  • Si utilizas Cinemachine, puedes crear un script para permitir que la cámara siga al personaje.
csharp
using UnityEngine; public class ControladorCamara : MonoBehaviour { public Transform objetivo; void LateUpdate() { if (objetivo != null) { transform.position = objetivo.position; } } }

6. Configurar Inputs en el Script de Controlador de Personaje:

6.1. Configurar Inputs en el Script:

  • Puedes configurar las teclas o botones de input directamente en el script o mediante variables públicas.
csharp
public class ControladorPersonaje : MonoBehaviour { // ... void MoverPersonaje() { floatmovimientoVertical = Input.GetAxis("Vertical"); float movimientoHorizontal = Input.GetAxis("Horizontal"); Vector3 movimiento = new Vector3(movimientoHorizontal, 0f, movimientoVertical) * velocidad * Time.deltaTime; transform.Translate(movimiento, Space.Self); } void RotarPersonaje() { float rotacion = Input.GetAxis("Horizontal") * velocidadRotacion * Time.deltaTime; transform.Rotate(Vector3.up, rotacion); } }

7. Asociar el Controlador de Cámara (Opcional):

7.1. Asociar el Controlador de Cámara:

  • Asocia el script de controlador de cámara al objeto de la cámara y establece el objetivo como el personaje.

8. Ejecutar y Probar:

8.1. Ejecutar y Probar:

  • Ejecuta la escena y prueba los inputs para asegurarte de que el personaje responda correctamente.

Compártelo en tus redes

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER