본문 바로가기
Unity 포트폴리오/플젝3. 플랫포머 게임[브레인 멜트다운 모작]

플레이어의 벽면 충돌 방지_ Physics Material 2D(Unity 프로젝트 / 플랫포머 2d 게임)

by jjiing 2022. 7. 17.

플랫포머 게임에서 가장 중요한 것은 이동이기 때문에 조작감이 매우 중요하다.

나는 그림과 같이 땅에 엣지 콜라이더를 사용했는데, 벽면도 땅 처리가 되기 때문에 벽에서 자꾸 마찰이 생기는 문제가 있었다.

 

해결방법

Projects 창> create > 2d> Physics Material 의 friction(마찰)값을 0으로 바꿔주면 내가 원하는 조작감으로 구현할 수 있다!!

 

 

 

 

하지만,

이럴경우 추가로 발생하는 문제점  :  마찰이 없기 때문에 경사면에서 그냥 주르륵 미끄러져 버린다.

 

 

해결방법

if (moveX == 0) rigid2d.constraints = RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezeRotation;
else rigid2d.constraints = RigidbodyConstraints2D.FreezeRotation;

해결방법

moveX는 Input.GetAxisRaw("Horizontal2")로 받아온 float값이다.

인풋값이 없을 때, rigidbody의 constraints - Freeze PositionX를 고정시켜준다.

코드를 보면 기본적으로 회전값이 고정돼있는데, 인풋이 없을 땐 추가로 x좌표도 고정시키는 것이다.

비트연산자를 사용해 고정시킨 코드이다.