프로그래밍 2016. 4. 18. 19:18
728x90

 

오브젝트 바닥 충돌 처리

 

 

원래 계획에는 없었는데,

까마귀 맵을 만들면서,

절벽 위에 올라갈수 있으면 좋겠다 라는 생각이 들어,

작업을 진행하였다.

 

나트막한 돌이라던지, 절벽 위라든지

올라갈수가 있게 되었다!

 

 

 

 

 

 

 

 

충돌 방식의 구현에 대해서 잠깐 이야기해 보자면,

 

obb2obb 충돌 체크

->충돌되었다면, 바텀 체크

->바텀이 체크되지 않으면, 옆면들을 체크

 

바텀 체크는

- 아래로 향하는 라인과 평면의 교차를 검사

- 교차되는 면이 있으면 IntersectTriangle 을 이용하여 정확한 충돌지점을 검출

- 평면의 방정식과는 별도로 월드 정점 4개가 필요하다

 

옆면 체크는

- 점(포지션)과 평면의 위치 관계를 검사

- 점이 평면의 앞에 있다면, 슬라이딩 벡터를 적용

 

 

 

 

 

 

 

 

 

뭐, 하여튼

이것저것 테스트 해보는 중,

생각외의 결과들이 많이 나와서,

시간이 좀 걸렸다.

 

주의할 점은,

평면의 방정식으로는

점과 선 들과의 관계만을 구해낼수 있고,

월드상의 위치 관계를 알아낼수는 없다.

 

월드 위치상의 결과를 구하기 위해서는

평면의 월드 위치를 가지고 있는 정점 4개가 따로 필요하다.

평면을 만들때, 미리 저장해 두자.

 

 

 

 

 

 

여러개의 오브젝트가 겹치는 경우에는

겹쳐지는 오브젝트의 충돌 바텀 Y 값을 모두 구한후에,

그중 가장 높은 Y 값을 사용

 

 

 

 

처리하기 애매한 부분이

캐릭터의 머리쪽에 걸쳐지는, 거의 위를 향하는 면의 경우인데,

이런 경우는 밀어내기를 해도,

밀어내는 힘이 약해져서(면의 방향성 때문에)

캐릭터가 슬슬 파고들어가게 된다.

 

 

728x90

'프로그래밍' 카테고리의 다른 글

퍼지 (Fuzzy) 프로그래밍 - 2  (0) 2016.09.09
퍼지 (Fuzzy) 프로그래밍 - 1  (0) 2016.09.09
흑백 쉐이더, 그레이 쉐이더  (0) 2016.03.30
obb 충돌 구현 2  (0) 2016.02.18
obb 충돌 구현 1  (2) 2016.02.18
posted by BK dddDang
: