
문제 : 플랫포머 기반 게임을 만들때 계단이 아닌 위와 같은 경사로를 구현할 때 플레이어(회색)이 경사로에서 중력의 영향을 받아 1.올라갈 때 느린속도로 올라감. 반대로 내려올 때 가속을 받아 빠른 속도로 내려옴
2.경사로에서 입력이 없을 시(정지 상황을 유도) 중력에 이끌려 경사로 아래로 내려감.
3.점프(addforc.impulse)를 입력시 가속 상황에 더 멀리 점프하게 됨.(의도는 평지와 같은 힘만큼만 점프하길 원함)
참고 링크
위의 해결 방법은 다음과 같다.
1.플레이어가 경사로를 접했을 때 ray를 이용하여 해당 경사로의 정보를 저장한다.
2.ray와 맞다은 경사로로부터 수직의 법선을 그린다.
3.해당 법선과 (0,1)좌표와 아래로 선을 그어 맞닿은 지점의 각도를 저장한다.

4.해당 각도를 이용한다.
4-1.각도가 존재할 때 경사로를 오르고 내릴 때 속도를 보정해준다.
4-2.위와 동일하게 적용하면서 경사로의 각도가 일정 각도를 넘어서면 오를 수 없도록 한다.
와 같이 활용할 수 있다.
RaycastHit2D rayHit = Physics2D.Raycast(checkPos.position, Vector2.down, distance, LayerMask.GetMask("groundMask")); //checkPos의 위치로부터 아래방향으로 distance의 거리만큼 groundMask만 스캔
Debug.DrawRay(checkPos.position, Vector2.down * distance, Color.green);//위에서 그려진 ray를 가시화. 색은 Green.
angle = Vector2.Angle(rayHit.normal, Vector2.up); //rayHit.normal : 스캔된 오브젝트의 표면에서 수직방향을 반환, Angle : 두 지점의 각도를 구함
Debug.DrawLine(rayHit.point, rayHit.point + rayHit.normal, Color.red); //Ray가 닿은 부분부터 닿은 부분으 수직으로 선을 그린다. 색은 Red.