When a collision occurs on a CharacterController during a CharacterController.Move() call, the points of collision with static mesh colliders seems to be off by quite a bit when pushing against a sloped surface that is steeper than slopeLimit . ControllerColliderHit hit.point returns a point that appears to be significantly offset from the current position of the CharacterController. It appears to me that its offset in the direction of movement and somewhat deflected by the sloped surface in the direction of the slope. In other words, it looks like its returning a point that is where it WOULD collide if it were not stopped from moving by the slopeLimit.
Scenario: Character tries to run up a steep hill. When pushing toward the hill, collision point returned is forward and above the actual visual collision point. When character stops pushing toward the hill, the collision point jumps back to align properly with the visuals. Point appears to be anticipating a future position of the character if it were not stopped by slopeLimit.
This is seriously messing up my downslope sliding code because I use the collision point to both determine the normal of the ground polygon (via linecasting to that point) and if the collision occurred on the base of the capsule. (Capsule base determination could be done by using the CollisionFlags of the CC, but I can find no other way to get the collision point for doing my linecast to get the surface normal.)