투사체-벽면 충돌을 구현하려고 합니다.
투사체는 원형의 충돌범위를 가지고 있고, 벽면은 정사각형의 충돌범위를 가지고 있습니다.
한 프레임당 투사체는 속도 만큼의 길이를 지닌 직선으로 표현되므로, 사각형과 선분의 최단거리를 구하여 투사체가 지형과 충돌하는지를 검사하려 합니다.
지금 생각하는 방법은 사각형의 선을 연장하여 만든 십자가 영역을 벗어나는 직선의 경우, 연장선과 직선의 두 교차점중 짧은 교차점을 반지름으로 하는 해당 방향의 사각형 모서리에 위치한 원을 그리고, 원을 통과하는 직선영역의 중앙점에서 모서리로 선을내리면 그 선이 최단거리라는 방식인데, 이러면 충돌에 쓰일만큼 효율적인 연산이 이뤄지지 않는다고 생각해서 다른 방법이 있는지 질문올립니다.
1. 투사체와 지형과의 충돌을 구현하는 방법으로 사각형과 선분의 최단거리를 구하는것이 효과적인가요?
2. 최단거리를 구하는 방법으로 위 방법이 적절한가요? 만일 그렇지 않다면 적절한 방법에는 무엇이 있을까요?
3. 기존 게임에서는 투사체의 충돌을 어떻게 구현하나요?
쉽게 말해 원과 선분의 충돌을 감지하고 싶은 거지?
아 원과 정사각형이군. ㅈㅅ
넵 원(투사체)와 사각형(벽)을 감지하면 됨니다. 직사각형이라고는 했지만 정사각형을 전제로 해도 되요 ㅠㅠ
코헨서덜렌드 라인클리핑 알고리즘을 찾아봐
사각형을 확대하면 충돌용으로 쓸 수 있어
아 원과 정사각형이어도 내가 생각했던 방법을 확장해서 할 수 있네.
그림 올려준다 게이야. 내 글 올라오면 확인해라.
감사합니다!
레이-삼각형 충돌 응용하면 되겠네
원범위 고려하는거라면 캐릭터-바닥충돌 코드 찾아다 쓰면됨 삼각형만 원하는 사각형으로 응용하면 되고
왜냐믄 바닥폴리곤들 사이 미세 간격 때문에 허용오차가 들어가거든 그걸 원 반지름 이라고 생각하고 응용하면 같음
http://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm
ㄴ 아 직선과 투사체의 충돌을 사각형으로 확장하면 되겠네요
http://en.wikipedia.org/wiki/Line_clipping#Fast_clipping
다들 감사합니다. ㅠㅠ
위에 사각형을 확대하면 충돌용으로 쓸 수 있다고 한게 그런 의미.
내가 '바보' 야. 밥먹고 들어옴 ㅋㄷㅋㄷ
알고리즘은 간단한데 저걸 돌리면 원래의 긴 선분이 교점에 의해 잘려진 선분좌표로 바뀌어.
http://gall.dcinside.com/board/view/?id=programming&no=493692
글 올렸다. 읽어 봐라.
감사합니다
http://autogram.tk/이
중고차 어플리케이션 어떤가요?