Notice
Recent Posts
Recent Comments
Link
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

게임 프로그래밍

[Unity] 타일맵에서 벽에 박히는 현상 본문

프로그래밍/유니티

[Unity] 타일맵에서 벽에 박히는 현상

Junwe 2019. 12. 24. 17:12

현재 만들고 있는 게임에서 타일맵을 쓰고 있는데, 잘 움직이다가 벽에 박히는 현상이 간혈적으로 일어난다.

구글에 TileMap Stuck 이라느 키워드로 검색해보면 꽤 자주 일어 나는 현상인것 같다.

어떻게 해결해야할까 한창 고민했었다.

나한테 생기는 문제는 2가지 였다.

 

첫번째는, 평지에서 잘 움직이다가 갑자기 움직이지 않는 현상.

 

두번째는, 이러한 벽에서 점프를 하면 박혀서 내려가지지 않는 현상.

 

 

일단은 첫번째 문제의 검색 결과는 BoxCollider2D를 사용하는것이 아닌 edge Collider2D를 사용하라는 내용이었다.

그리고 두번째 문제의 검색 결과는 마찰을 0으로 주라는것.

 

 

Projects->Create->Physics Material 2D 로 생성이 가능하다.

저기서 Friction을 0으로 주고

플레이어의 Material에 넣어주라는 내용이다.

 

그러나 edge Collider2D를 넣고 마찰을 0으로 줘버리면 문제가 발생한다.

움직임이야 멈췄을때 velocity값을 0으로 주면 되지만

샷건 같은 경우에는 반동이 있어 AddForce로 힘을 주는데 마찰이 없으니 계속 밀리게 된다....

이 경우에는 0으로 주기도 애매한 상황..

 

게임제작 카테고리를 보면 알겠지만 나는 예제로 유니티짱을 넣었었다.

그런데 유니티짱도 예제에서 타일맵을 사용하는데 어떻게 해결했을지 보면 되지 않을까?! 라고 생각했다.

 

 

확인해본 결과.. 꽤나 심플하게 해결했다.

몸체는 BoxCollider를 두고 바닥에 CircleCollider를 둔것이다.

그리고 BoxCollider에는 마찰을 0으로 한 Material을 넣었다.

 

이렇게 되면

바닥과 맞닺는 CircleCollider은 마찰이 있을것이며 -> (타일맵과 맞닺는 곳이 BoxCollider가 아니어서 첫번째 문제 해결)

언덕과 맞닺는 BoxCollider은 마찰이 없어서 언덕에서 박히지 않는다. -> (언덕이 있는 벽에 박히지 않으므로 두번째 문제 해결)

 

그리고 내 개인적인 문제인 반동에는 바닥과 마찰이 있기 때문에 계속 미끄러지지 않는다!

 

 

나또한 똑같이 몸체는 BoxCollider 바닥은 Edge Collider을 줬다!

CircleCollider을 했었는데 빠르게 움직일때 통통 튀기는 효과가 있어서 Edge Collider를 네모난 모양으로 만들었더니 해결!

'프로그래밍 > 유니티' 카테고리의 다른 글

[유니티] 스크롤뷰 하나씩 넘기기  (0) 2020.01.15
[UNITY] Scriptableobject에 대해서  (0) 2020.01.07
코루틴 멈추기  (0) 2016.04.21
유니티 UGUI 마스크  (0) 2015.10.16
[Unity]두 벡터의 각도 구하기  (0) 2015.10.15
Comments