2014-12-20 6 views
0

У меня есть Collider2D, который перемещается в пределах более крупного стационарного коллайдера2D, и я хотел бы получить расстояние от центра меньшего до края более крупного вдоль направление он путешествует вUnity получить расстояние до края Collider2D от

Моя первая мысль была использовать Raycast, такие как:.

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

Но очевидно, что расстояние всегда 0, поскольку они уже пересекаются.

Есть ли способ сделать это?

EDIT: Вот схема, как просил diagram

Обе кружки Collider2D объекты, стрелка направление меньше один путешествует в и красный х является точкой Я хотел бы найти (так Я могу определить расстояние).

+1

Используйте границы коллайдера ... http://docs.unity3d.com/ScriptReference/Collider2D-bounds.html – Savlon

+0

Диаграмма или скриншот были бы очень полезными, я не уверен, что именно вы описываете когда вы говорите, что один коллайдер находится внутри другого. – theodox

+0

Хорошая идея. Савлон, однако, Bounds представляет собой ориентированную по оси ограничительную рамку, тогда как внешний Collider2D - это круг. –

ответ

0

Вместо того чтобы пытаться проверить наличие столкновения, вы можете сделать это математически.

Если вы знаете радиус/положение круга, положение меньшего Collider2D и вектор его движения, то вы можете решить, где этот вектор движения пересекается с кругом.

Вот как понять, что математически: http://www.analyzemath.com/CircleEq/circle_line_intersection.html

Другой подход, если вы все еще хотите raycast мог бы бросить луч из точки вдоль вектора движения меньшего объекта с расстояния больше диаметра большего круга в , Затем этот луч будет направлен в сторону меньшего объекта. По сути, вы бросаете луч извне круга, а не внутри круга.

Смежные вопросы