케릭터 컨트롤러가 다른 충돌체(Collider)랑 충돌했을 때 호출된다. 예제 코드에서는 충돌한 물체가 움직일 수 있는 물체인 경우 현재 이동중이던 속도를 그대로 전달하고 있다.
캐릭터 컨트롤러의 현재 상대 속도를 반환한다. 주의할 점: 반환되는 속도는 단순히 "CharacterController.Move" or "CharacterController.SimpleMove" 호출 전후의 거리 차이라고 한다. 케릭터 컨트롤러 외부에서 발생하는 변화에 대해서는 움직임을 추적하지 않기 때문에 상대적이라고 한다. 예제 코드에서는 velocity의 x, z 축 값을 가져와 수평이동 속도를 계산했다.
참고
https://docs.unity3d.com/ScriptReference/CharacterController.OnControllerColliderHit.html
https://docs.unity3d.com/ScriptReference/CharacterController-velocity.html