2013-01-01 6 views
0

시뮬레이션을 작성하고 현재 장애물을 추가하고 있습니다. 이제 장애물의 목적은 다른 에이전트가 다른 사람들이 볼 수 없도록 숨길 수있게하는 것입니다. 그러나 제가 시도하고 있습니다.장애물에 물체가 숨겨져 있는지 확인

enter image description here

블랙의 에이전트는 에이전트를 볼 수 있어야합니다보기에서 에이전트 따라서 seen.Here 할 수없는 장애물 뒤에하고 있는지 확인하는 가장 좋은 방법 일 것입니다 무슨 파악하는 것은 예입니다 빨간색이지만 상담원을 노란색으로 볼 수 있어야합니다 (녹색 선은 상담원의 시야를 검은 색으로 나타냄)

내 시야가 상담원이있는 각도 만 계산하고 각도가 시야 내에 있는지 확인합니다. 게임 개발자가 레이 - 캐스팅에 대해 읽고 사용하고있는 솔루션을보고 있었지만, 매우 계산적으로 무거워 보였으므로 레이크 캐스팅에 수백 명의 에이전트가 필요하기 때문에 좋은 해결책은 아닙니다.

또 다른 생각은 장애물이 보이는 각도 (예 : 90-120도)를 확인하고 에이전트가 장애물에 의해 차단 된 것과 동일한 각도 범위에있는 경우입니다 (If 그것은 의미가있다).

내가 게임 개발과 관련된 일에 매우 익숙한 사람이라면 누구든지 나를 간단하고 효율적인 솔루션으로 안내 할 수 있는지 물어보기 위해 여기에 게시합니다.

미리 감사드립니다.

+0

왜 이것은 java와 관련이 있습니까? – Swapnil

+0

오, 죄송합니다. 제가 만드는 프로그램은 자바로 작성되었습니다. – Tohmas

답변

1

2d 인 경우 두 줄 (파란색으로 표시)을 만들고 줄과 에이전트 사이의 거리를 테스트합니다. 청색 선에서 상담원까지의 거리는 최소한 상담원 반경이거나 상담원이 보일 수 있어야합니다. 또한 각 파란색 선에 선의 어느면이 있는지를 결정하기 위해 점을 찍을 수있는 수직 "표준"벡터를 지정하십시오. 3d라면 동일하지만 라인 대신 비행기를 사용하고 2 대신에 4 또는 mor 평면이 필요합니다. 본질적으로 이것은 절두체 컬링이 수행되는 방법입니다.

enter image description here