2014-12-20 5 views
0

저는 큰 고정식 Collider2D 안에서 움직이는 Collider2D을 가지고 있습니다. 더 작은 하나의 중심에서 더 큰 하나의 중심까지의 거리를 얻고 싶습니다. 방향이 여행 것Unity에서 Collider2D의 가장자리까지 거리를 얻으십시오

내 첫번째 생각 사용했던 Raycast 같은 :.

Physics2D.Raycast(this.transform.position, 
        this.rigidbody2D.velocity.normalized).distance; 

그러나 그들은 이미 교차 될 때 분명 거리가 항상 0입니다.

이렇게 할 방법이 있습니까?

편집 : 여기 diagram

두 원이 Collider2D 개체의 요청에 따라 그림이 화살표는 작은 하나에 여행하는 방향이며, 빨간색 x 내가 발견하고 싶은 점 (그렇다 거리를 결정할 수 있습니다.)

+1

콜라이더의 경계를 사용하십시오 ... http://docs.unity3d.com/ScriptReference/Collider2D-bounds.html – Savlon

+0

다이어그램 또는 스크린 샷이 매우 유용 할 수 있습니다. 설명하는 내용을 정확히 모르겠습니다. 당신이 한 콜라이더가 다른 콜 라이더 안에 있다고 말할 때. – theodox

+0

좋은 생각 Savlon 그러나 바운더스는 바운딩 박스와 정렬 된 축을 나타내지 만 외부의 Collider2D는 원입니다. –

답변

0

충돌을 확인하는 대신 수학적으로 충돌을 검사 할 수 있습니다.

원의 반경/위치, 더 작은 Collider2D의 위치 및 이동 벡터를 알고 있으면 해당 이동 벡터가 원과 교차하는 위치를 해결할 수 있습니다. http://www.analyzemath.com/CircleEq/circle_line_intersection.html

또 다른 방법을 여전히 큰 원의 직경보다 더 큰 거리를두고 작은 물체의 움직임 벡터를 따라 지점에서 선을 투영 할 수있는 레이 캐스트하려면 : 여기

수학적으로 알아낼 방법입니다 . 이 광선은 작은 물체쪽으로 던져 질 것입니다. 근본적으로, 당신은 원 안쪽이 아닌 원의 바깥 쪽에서 광선을 주조합니다.