Как Unity Raycast обнаруживает точку "Out" коллайдера, а не только "In"

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

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

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);
Другие вопросы по тегам