Skip to content
Escalar Esfera

Unity 3D: componente Character Controller

Conociendo Unity3D (V)
1. Prefabs de Unity para crear videojuegos en primera persona
2. Canvas: creación de interfaz de usuario en Unity
3. Ejemplo básico con First Person Character y Canvas
4. Video: ejemplo básico videojuego Unity 3D en primera persona con interfaz táctil
5. Input multiplataforma para videojuegos Unity
6. Proyecto Unity 3D: ambientación escena
7. Video Proyecto ambientación de escena en Unity 3D
8. Unity 3D: componente Character Controller
9. Unity 3D: ejemplo implementación de Character Controller

El motor de juegos Unity proporciona un componente denominado character controller, que permite controlar la aceleración y el movimiento de un personaje (ya sea en primera o tercera persona) a lo largo de un escenario, sin hacer uso de físicas. Dicho elemento proporciona al objeto un collider con forma de cápsula, siempre en posición vertical, que define su propia velocidad y dirección, pero cuya cantidad de movimiento (más conocido en física como momentum, y que se obtiene a partir de la masa de un cuerpo en movimiento y su velocidad lineal), dista gran diferencia de ser físicamente real.

En esta publicación veremos las propiedades de este componente así como alguna recomendaciones sobre su uso para la creación de videojuegos en primera o tercera persona, y posteriormente describiremos un ejemplo de implementación del componente Character Controller en un GameObject primitivo , en este caso, un objeto Sphere , incluyendo un pequeño video donde visualizaremos dicho ejemplo. 

Componente Character Controller

Para añadir este componente a cualquier GameObject de la escena bastará con seguir el menú Component > Physics > Character Controller o desde el botón «Add Component» dentro de la ventana inspector y a través de la ruta Physics > Character Controller.

Character Controller menuCharacter Controller Inspector

En la siguiente tabla mostramos las diferentes propiedades que define el componente Character Controller, describiendo la función principal de cada una:

Propiedad Función
Slope Limit Límite de la pendiente que puede subir el controlador. El rango de valores permitido es entre 0 y 180.
Step Offset Este valor define el desplazamiento del personaje asociado a su altura (los valores comprendidos entre 0.1 y 0.4 hacen referencia a un humano con la altura de 2 metros).
Skin width Se recomienda que este valor sea el 10% del radio asignado al collider. Permite controlar el grado de inserción entre dos colliders (un valor alto permite controlar mejor las colisiones, un valor bajo puede ocasionar que el personaje quede atascado en cualquier deformación del terreno).
Min Move Distance Si se establece un valor superior a cero, el personaje no se moverá de su posición.
Center Este valor permite posicionar al capsule collider con respecto a los ejes X, Y, Z.
Radius Establece la longitud del radio del componente capsule collider, controlando la anchura del colisionador.
Height Define la altura del componente capsule collider del personaje. Al modificar este valor, se escalará el collider tanto en sentido negativo como positivo del eje Y.

A continuación, se describirán algunas de las recomendaciones que se proponen desde Unity, para el uso de un character controller en un objeto:

  • Ajustar la propiedad Skin Width si se aprecia que el objeto se atasca en el escenario.
  • Un componente character controller no se verá afectado por objetos a través de físicas. Es posible definir un script propio para que las físicas afecten al GameObject que implemente un character controller (otra opción disponible es sustituir un character controller por el componente Rigidbody).
  • Modificar la altura y radio para ajustar el collider a la malla del personaje. Se recomienda el uso de una altura de dos metros para el uso de personajes humanos.
  • No utilizar un valor excesivamente bajo para la propiedad Slope Limit (un valor de 90 grados suele ser una opción apropiada).

Ejemplo implementación Character Controller

En el siguiente ejemplo en el que se tratará un character controller, se mostrará como asignar este componente a un objeto primitivo de tipo esfera, y junto con los dos scripts que proporciona Unity para definir un personaje en tercera persona, se podrá controlar la esfera situada en el terreno con las teclas W,S, A, D (arriba, abajo, izquierda y derecha) o con las teclas de dirección:

Partiremos de la base de que tenemos situado en el terreno un GameObject de tipo esfera (recordemos que es posible añadir estos objetos desde el menú GameObject > Create Other > Sphere, además de que componentes define por defecto todo GameObject primitivo: transform, mesh filter, collider y mesh renderer).

Se creará un GameObject vacío a través del menú GameObject > Create Empty. Se seleccionará el objeto esfera y se arrastrará dentro del GameObject vacío creado.

Al GameObject esfera, se le añadirá un componente character controller, pulsando el botón «Add Component» en la ventana inspector, y a través del menú «Physics > Character Controller».

Además del componente indicado anteriormente, deberán añadirse dos scripts que proporciona Unity para el control del personaje en tercera persona, denominados Third Person Controller (encargado de establecer las animaciones y valores de velocidad, gravedad salto etc. asociados al personaje) y Third Person Camera (define las propiedades asociadas a la cámara que seguirá al personaje a lo largo del escenario). Ambos scripts podrán encontrarse pulsando el botón «Add Component» y seleccionando el menú Physics dentro de la ventana inspector.

Inspector Esfera1
Third Person Controller
TPC Camera
Para que la cámara de la escena siga al personaje en tercera personaje, y no sea necesario asignar el GameObject camera a la propiedad «Camera Transform» del script Third Person Camera, se deberá establecer el tag de la cámara de la escena con valor «Main Camera», para que el script la reconozca como la cámara principal.
Inspector Esfera1
Para aumentar en cierto grado la complejidad del ejemplo, se crearán varias esferas similares a la comentada anteriormente, con la excepción de eliminar el componente Third Person Camera de cada esfera nueva creada (para crear un GameObject a partir de otro bastará con seleccionar el objeto a replicar y pulsar la tecla Ctrl + D, añadiendo un nuevo objeto a la jerarquía, con los mismos componentes y valores asignados al objetos original).

Una vez se han creado varias esferas situadas en el escenario, se modificará el tamaño de cada una de manera gradual, para representar un objeto similar a una cadena de esferas, quedando algo similar a lo que se muestra en la siguiente imagen.

Third Person Controller

Para escalar un objeto manteniendo sus proporciones en los diferentes ejes, bastará con seleccionar el objeto a escalar, a continuación pulsar el siguiente icono, que es la herramienta disponible para esta tarea IconoEscalar, y por último seleccionar el cuadro gris (pasará a color amarillo al ser seleccionado) situado en el centro de los tres ejes del objeto. Si deslizamos el cursor una vez seleccionado (y sin soltar el botón izquierdo del ratón) el cuadro central hacia arriba o hacia la derecha aumentará el tamaño del objeto, por el contrario si deslizamos hacia la izquierda o hacia abajo disminuirá el tamaño:

TPC Camera

Por último, a cada esfera (excepto a la primera esfera creada que contiene el componente Third Person Camera) se le deberá añadir un nuevo script denominado Smooth Follow, que podrá encontrarse al pulsar el botón «Add Component» en el menú «Camera-Control». Dicho componente se encargará de establecer la lógica de seguimiento entra las diferentes esferas situadas en la escena. Como se puede apreciar en la siguiente imagen, además de las diferentes propiedades asociadas a la distancia, altura o atenuación del rebote o rotación de la cámara, se define una propiedad llamada Target, encargada de establecer a que objeto deberá seguir la esfera que contiene este script. Se establece la lógica de que cada esfera siga a la situada justo a continuación (Esfera2 a Esfera1, Esfera3 a Esfera2 etc.):

Escalar Esfera
Finalmente la jerarquía de la escena quedaría como se muestra en la siguiente imagen:
Esfera2 Inspector

En el siguiente vídeo puede visualizarse el movimiento del ejemplo creado:

En la próxima publicación explicaremos en detalle esta implementación ejemplo que hemos hecho en un video

 

Volver arriba
Esta web usa cookies para su correcto funcionamiento. No hay cookies de publicidad, aunque algunos de los contenidos mostrados (videos o documentos insertados) están alojados en servicios externos (Youtube, Vimeo, Box...) que sí pueden implementar sus propias cookies.    Más información
Privacidad