2016-06-18 10 views
0

화면 가장자리에 아이콘이있는 것을 통해 플레이어를 현장의 마지막 적에게 인도하려고합니다. 화면 밖의 마지막 적을 가리키고있다.선분의 교차점 찾기 (하나의 점은 바깥 쪽, 다른 하나는 바깥 쪽)과 rect 쪽

화면이 직사각형이며, 플레이어가 직사각형 내의 포인트이고, 적이 직사각형 외부의 포인트입니다. 나는 어느 쪽을 찾는 생각할 수

Example

솔루션은 내가 제대로 할 방법을 잘 모르겠어요 어떤 (교차되지만, 내가 먼저 수직 또는 수평면에 교차 될 경우 찾는 포함 상상) 다음 선형 방정식을 사용하여 x 또는 y를 찾습니다. 또는 각면에서 line-line-intersection 방법을 사용할 수는 있지만 화면 rect가 결코 바뀌지 않으므로 다소 과도한 것으로 보입니다.

하나의 테스트 케이스에 대한 제 1의 솔루션을 가지고 있지만 Unity에서 전혀 작동하지 않습니다.

해결 방법이 있습니까? 아니면 올바른 방향으로 나를 밀어 낼 수 있습니까? 고마워.

답변

0

하자 사각형의 모서리는 DX가 양수이면 방정식

X = XLeft 
Y = YBottom 
X = XRight 
Y = YTop 

플레이어-적 벡터

D = (D.X, D.Y) = (E.X - P.X, E.Y - P.Y) 

는, (그렇지 않으면 왼쪽으로) 오른쪽 가장자리

P.X + t * D.X = XRight 

경우에 교차을 고려해야 DY가 양수이고, 상단 모서리와의 교점을 고려해야합니다 (그렇지 않으면 하단이 있습니다)

P.Y + u * DY.Y = YTop 

t와 u에 대한 방정식을 풀어 라. ut보다 작은 경우, 수평 가장자리 교차 먼저 간다, 표현과 교차로의

XInt = P.X + u * D.X 
+0

감사를 X 좌표를 찾아,이 작품! 알고리즘 중에 적이 rect 안에 있는지 감지하는 방법이 있습니까? 지금은 직전에 직사각형인지 확인하고 교차점 계산을 취소하면됩니다. – user1940572

+0

예, 적의 위치가 't> 1'및 'u> 1'인지 여부를 감지 할 수 있습니다. 그러나 직사각형에 대한 검사는 더 간단합니다. 그래서 생각합니다. 계산하기 전에 확인하는 것이 중요합니다. – MBo