Existen varias soluciones posibles para el problema que estás experimentando al utilizar un character controller en tu personaje en Unity. Te propongo algunas opciones que podrían funcionar:
Utiliza el componente "Rigidbody" en lugar del character controller: Este componente de Unity permite que los objetos físicos en el juego se muevan de manera realista con la simulación de la física. Al agregar un Rigidbody a tu personaje, podrás controlar su movimiento de una manera más natural. Además, puedes ajustar la forma del colisionador para que se ajuste mejor a la forma de tu personaje.
--- Pues sobre este punto, te explico, al principio tenía un RigidBody, pero me hacía efectos un poco raros. Me voy a explicar, cuando llegaba a una pared colisionaba, pero si mantenía pulsado el botón para hacer la acción de correr y aunque intentase ajustar la velocidad al final el personaje (después de un rato) acaba consiguiendo pasar la pared, aunque hice varios controles por código, como la pared es fina la animación acaba haciendo que poco a poco se atraviese. Además si dejaba al personaje parado cerca de una pared al hacer la animación del idle, en la cual mueve un brazo en lateral a modo de saludo, la mano acababa entrando en la pared y se veía un cacho de brazo por el otro lado. Le coloqué un par do coliders en las manos y otro un poco separado de la pared, pero aunque los detectaba y por código paraba la animación igualmente parte seguía pasando.
Al final me decanté por el Character controller, el cual me resolvía esos problemas, sé que no tiene la misa física, pero la física se la he aplicado por código, además utilizo el método SimpleMove, que como sabes aplica automáticamente gravedadd en el eje Y y también permite utilizar velocidad para el X y Z.
Usa la opción "Automatic" en el ajuste del centro de la cápsula: Si tienes la cápsula del character controller ajustada a "Manual", es posible que la cápsula no se esté moviendo con el personaje. Intenta cambiar a la opción "Automatic" para que la cápsula se ajuste automáticamente a la posición del personaje.
-- Pues aquí me has pillado, no veo esa opción en la capsula que crea el CharacterController, ¿me podrías orientar, por favor?
Modifica las animaciones para que coincidan con el movimiento de la cápsula: Puedes ajustar las animaciones de tu personaje para que se sincronicen con el movimiento de la cápsula del character controller. Esto puede requerir ajustar la posición y rotación de los huesos de tu personaje en la animación.
-- En este caso te comento que no es el problema, me explico, todas las animaciones se mueven con la capsula bien, pero en el salto la capsula no quiere hacer caso al eje Y, salvo que la ponga en el hips, pero claro, en el hips no actuan las animaciones.
Ajusta la posición de los huesos en Maya: Puedes ajustar la posición de los huesos de tu personaje en
Autodesk Maya para que coincidan con la cápsula del character controller en Unity. Asegúrate de que la posición de la cápsula en Unity coincida con la posición de la cápsula en Maya.
-- Pues curiosamente los huesos están bien orientados, porque el avatar los coge perfectamente y además como te comento se reproducen bien con la capsula.
Usa un script de movimiento personalizado: En lugar de utilizar el character controller, puedes crear un script personalizado para controlar el movimiento de tu personaje. Esto te permitirá tener un control más preciso sobre el movimiento del personaje y su colisionador.
-- Sí, lo he usado también, de echo lo hice con el rigidbody y lo adapté luego, el personaje se mueve perfectamente, es la capsula la que no quiere despegarse del suelo ni aunque la paguen, jajajaja.
Espero que alguna de estas soluciones te ayude a resolver tu problema. Recuerda que en algunos casos, puede ser necesario combinar varias soluciones para lograr el resultado deseado. ¡Buena suerte!