[TIL] 28일 차 - Unity 플레이어가 벽에 붙는 현상을 고쳐보자

ChangBeom·2025년 3월 6일

TIL

목록 보기
29/53
post-thumbnail

진행 중인 프로젝트에서 플레이어를 앞으로 이동하며 점프하여 벽에 부딪힌 후 계속 이동하면 벽에 붙는 현상을 발견했다.


[문제점]

현재 아래와 같이 플레이어가 점프해서 벽에 충돌하면 벽에 붙게 된다. 정확한 이유는 모르지만, 아마도 플레이어와 벽의 Collider가 충돌하면서 생기는 현상인 것 같다.


[해결 방안]

구글링을 통해 나와 같은 현상을 겪는 사람들이 여럿 있다는 것을 확인했고, 이 문제는 물체의 마찰력 때문에 생기는 현상이라는 것을 알아냈다. 해당 문제점을 토대로 플레이어가 벽에 부딪힐 때 생기는 마찰을 없애서 벽에 붙는 현상을 수정해보자.

가장 간단한 방법은 플레이어가 벽에 부딪힐 수 있는 전면과 측면에 collider를 생성하여 해당 collider의 마찰력을 없애는 방법이다. 마찰력은 Physic Material 을 사용해서 없앨 수 있다. 이제부터 Physic Material에 대해 알아보자.

먼저 Physic Material의 생성은 다음과 같이 할 수 있다.

Assets 폴더에서 우클릭 -> Create -> Physic Material


Physic Material을 생성한 후 클릭하면 Inspector 창에서 세부 설정을 할 수 있다.

  • Dynamic Friction
    이미 움직이고 있을 때 사용되는 마찰이다. 0과 1사이의 값을 가지며, 0이면 얼음처럼 미끄러지고, 1이면 오브젝트가 큰 힘이나 중력에 밀리지 않는 한 아주 빨리 정지한다.
  • Static Friction
    오브젝트가 표면 위에 가만히 놓여 있을 때 사용되는 마찰이다. 값의 설정은 Dynamic Friction과 동일하다.
  • Bounciness
    표면이 얼마나 탄성이 있는지 나타낸다. 값이 0이면 물체가 튕기지 않고 값이 1이면 물체가 에너지 손실 없이 튕긴다.
  • Friction Combine
    충돌하는 두 오브 젝트의 마찰이 합쳐지는 방법이다.
    • Average
      두 마찰 값이 평균이 사용된다.
    • Minimum
      두 마찰 값 중 작은 값이 사용된다.
    • Maximum
      두 마찰 값 중 큰 값이 사용된다.
    • Multiply
      두 마찰 값을 서로 곱한 값이 사용된다.
  • Bounce Combine
    충돌하는 두 오브젝트의 탄성이 합쳐지는 방법이다. 세부 설정은 Friction Combine과 동일하다.

나는 마찰력을 없애야 하는 상황이기 때문에 마찰력과 관련된 설정을 모두 제일 낮게 세팅하고, 관성도 딱히 필요없어서 관성과 관련된 설정도 전부 제일 낮게 세팅했다.


그리고 Box Collider를 활용해서 플레이어의 전면과 측면을 감싸고 해당 Collider들에게 방금 만든 Physic Material을 적용시켰다.



이렇게 적용시키면 Box Collider와 부딪히는 부분은 얼음과 같이 미끄러지기 때문에 벽에 붙지 않는다.


[해결]


이제 벽에 붙는 현상이 수정된 것을 확인할 수 있다.


오늘은 Physic Material에 대해 알아봤는데, 이렇게 마찰력에 관련된 세팅뿐만 아니라 관성에 관련된 세팅을 통해 공같은 것을 만들 때 유용하게 사용할 수 있을 것 같다고 생각했다.

다양한 재질의 물체를 만들고 싶을 때 Physic Material을 적극 활용해보자.

0개의 댓글