2011-12-03 2 views
2

좋아, (http://www.swiftless.com/terraintuts.html에 느슨하게 기준) 일부 절차 적으로 생성 된 지형OpenGL을 지형 Colission 감지

필자는 당신이 (제 3 자 카메라) 주변에서 비행 할 수 주전자 "비행기"를 가지고 있습니다

기본적으로, 목표는 골짜기 등을 빠져 나가는 것입니다 ... 충돌하지 않고.

내가 할 수없는 일은 당신이 지형과 충돌했는지 여부를 계산하는 것입니다.

아이디어가 있으십니까?

답변

3

지형지도, 대한 충돌 테스트 특히 쉽게 지형의 높이에 2 번째의 점 (x, y), 그 시점에서 TERRAIN [x, y] 주전자 평면이 (t_x, t_y, t_z) 일 때, (t_x, t_y)에있는 지형의 높이에 대해 높이를 테스트하십시오. 즉, t_z < TERRAIN [x, y]이면 충돌이 발생했습니다. 더 정확한 결과를 얻기 위해 지형에 대해 여러 점 (아마도 주전자의 중앙에있는 정육면체의 모서리)을 테스트 할 수 있습니다. 지형지도의 거칠기에 따라 가까운 격자 점을 선택하거나 직선 보간하여 임의의 지점에서 지형의 높이를 계산할 수 있습니다.

+0

팁을 주셔서 감사합니다! 내 LOD 알고리즘의 일부로 매끄럽게 적용되는 것과 같이 매우 부드러운 지형입니다. –

0

충돌 탐지 전용의 전체 서적이 있지만 단순한 게임에서 나는 바운딩 구를 정의하는 각 엔티티의 반경을 생성하여 충돌 감지를 처리합니다. 모든 프레임에서 모든 엔티티는 다른 엔티티와 비교되어 그 사이의 거리를 찾습니다. 거리가 두 엔티티의 결합 된 반지름보다 작 으면 충돌이 기록됩니다.

이렇게하려면 각 클래스 (예 : 로켓, 몬스터, 플레이어, 트리 등)가 클래스 충돌이 발생했을 때 논리를 유지하는 클래스 인 하위 클래스가 있습니다. 즉, 로켓이 발사 될 때 몬스터를 죽일 수 있지만 나무를 태우십시오 (제가 로켓과 나무 실체를 가지고 있다고 가정).

훨씬 더 자세하게 많이 설명 내가 따라 좋은 책은 다음과 같습니다 지형지도는지도에서이기 때문에

http://www.amazon.co.uk/Beginning-OpenGL-Game-Programming-Second/dp/159863528X/ref=dp_ob_title_bk