Version: 2021.1
Capsule Collider
Character Joint

El Character Controller ( Controlador del personaje)

El Character Controller es principalmente utilizado para controles de jugador de tercera o primera persona que no hace uso de la física del Rigidbody.

Propiedades

Propiedad: Función:
Slope Limit Limita el collider para que solo suba pendientes que sean menos empinadas (en grados) que un valor indicado.
Step Offset El personaje va a configurar una escalera solamente si está cerca al piso que el valor indicado. Este no debe ser mayor que la altura del Character Controller o va a generar error.
Skin width Dos Colliders pueden penetrarse entre sí tan profundo como el ancho de su piel (Skin Width). Mayores Skin Widths van a reducir la fluctuación de fase. Bajo Skin Width puede causar al personaje en quedarse atrapado. Un buen ajuste es hacer este valor 10% del Radius.
Min Move Distance Si el personaje intenta moverse debajo del valor indicado, no se moverá en absoluto. Esto puede ser utilizado para reducir la fluctuación de fase. En la mayoría de situaciones este valor no debería ser dejado en 0.
Center Esto va a desplazar el Capsule Collider en el espacio del mundo, y no va a afectar qué tanto el Personaje hace pivotes.
Radius Longitud del radio del Capsule Collider. Este es esencialmente el ancho del collider.
Height La altura de la Capsule Collider del personaje. Cambiar esto va a escalar el collider a lo largo del eje Y en ambas direcciones positivas y negativas.
El Character Controller
El Character Controller

Detalles

Los controles tradicionales de primera persona estilo Doom no son físicamente reales. El personaje corre 90 millas por hora, para inmediatamente y se convierte en una moneda de diez centavos. Debido a que es tan ficticio, el uso de Rigidbodies y física para crear este comportamiento es impráctico y se sentirá mal. La solución es el Character Controller especializado. Es simplemente una cápsula con forma de Collider que se le puede decir que se mueva en alguna dirección desde un script. El Controller luego va a llevar a cabo el movimiento pero se limitado por las colisiones. Éste se deslizará a lo largo de paredes, caminar escaleras (si son más bajas que el Step Offset) y caminar en pendientes dentro de un _Slope Limit.

El Controlador (Controller) no reacciona a fuerzas por sí mismo y no empuja automáticamente los Rigidbodies.

Si usted quiere empujar los Ridibodies u objetos con el Charaacter Controller, usted puede aplicar fuerzas a cualquier objeto que colisione vía la función OnControllerColliderHit() a través de scripting.

Por otro lado, si usted quiere que su personaje del jugador sea afectado por física entonces usted podría mejor utilizar un Rigidbody en vez de un Character Controller.

Ajustando su personaje

Usted puede modificar la Height y el Radius para que encaje con el mesh de su personaje. Es recomendado siempre utilizar acerca de 2 metros para un personaje que se parezca a un humano. Usted puede también modificar el Center de la cápsula en caso de que su punto de pivote no esté exactamente en el centro de su Personaje.

Step Offset puede afectar esto también, asegúrese de que este valor esté entre 0.1 y 0.4 para un humano de tamaño de 2 metros.

Slope Limit no debería ser muy pequeño. A veces utilizar un valor de 90 grados funciona mejor. El Character Controller no será capaz de escalar paredes debido a la figura de la cápsula.

No se quede atrapado

El Skin Width es una de las propiedades más críticas para tenerla bien cuando ajuste su Character Controller. Si su personaje se queda atrapado, esto debe ser debido a que su Skin Width sea muy pequeño. La Skin Width le permitirá a sus objetos poco a poco entrar el Controller pero quita la fluctuación de fase y previene que se quede atrapado.

Es una buena práctica mantener su Skin Width al menos mayor que 0.01 y más que el 10% de su Radius.

Nosotros recomendamos mantener Min Move Distance en 0.

Vea la referencia de script del Character Controller Aquí

Consejos

  • Intente ajustar su _Skin Width si usted encuentra que su personaje se está quedando atrapado frecuentemente.
  • El Character Controller puede afectar objetos utilizando física si usted escribe sus propios scripts.
  • El Character Controller puede no ser afectado por objetos a través de física.
  • Tenga en cuenta de que cambiar las propiedades del Character Controller en el inspector va a re-crear el controller en la escena, por lo que cualquier existente contacto Trigger se va a perder, y usted no va a obtener cualquier mensaje OnTriggerEntered hasta que el controller se mueva nuevamente.
  • The Character Controller’s capsule used in queries such as raycast might shrink by a small factor. Queries therefore could miss in some corner cases, even when they appear to hit the Character Controller’s gizmo.
Capsule Collider
Character Joint