Moverse sobre pendientes puede requerir lógica extra según el sistema de movimiento.
CharacterController tiene propiedades como:
Estas se ajustan desde el Inspector.
Con un Raycast:
if (Physics.Raycast(
transform.position,
Vector3.down,
out RaycastHit hit,
2f,
layerSuelo))
{
Vector3 normal = hit.normal;
}
Vector3 movimientoPendiente =
Vector3.ProjectOnPlane(
direccion,
hit.normal
).normalized;
Esto adapta la dirección al plano de la superficie.
float angulo = Vector3.Angle(
hit.normal,
Vector3.up
);