Как Unity Raycast определяет точку вне коллайдера, а не только внутри

Используя Physics.Raycast в Unity, мы можем легко получить информацию о попадании с помощью имени точки, нормали, коллайдера... Но как я могу получить «точку», где луч выходит из коллайдера?

Большое спасибо, что уделили время размышлениям над этой проблемой.


person user3792343    schedule 01.07.2014    source источник


Ответы (1)


Вы могли бы попробовать применить обратный луч только к коллайдеру, в который попали, чтобы вы могли определить, куда луч входит сзади? Код ниже может работать.

RaycastHit firstHit;
Ray firstRay = new Ray (origin, direction);
Physics.Raycast (firstRay, out firstHit, distance);

Vector3 reverseOrigin = firstRay.origin + (firstRay.direction * distance);
RaycastHit reverseHit;
Ray reverseRay = new Ray (reverseOrigin, (firstRay.direction * -1));
firstHit.collider.Raycast (reverseRay, out reverseHit, distance);
person ryanscottmurphy    schedule 01.07.2014