2016-06-05 4 views
-1

У меня есть система, используя физику пули, которая использует соединение физики твердого тела,Рассчитайте, какой дочерний объект был поражен лучом или столкновением?

raycast поражать объекты детей, просто возвращает объект, (а не ребенок объект)

работать вокруг этого, я использую расстояние от точки попадания до дочернего объекта, но это немного наивно, так как объем столкновений может быть сферой, кубом, капсулой и т. д., который масштабируется на 3 оси.

я могу получить X, Y, и Z связаны dimensons локальными для объекта,

как бы использовать эту информацию, чтобы определить, какой дочерний объект был поражен лучом?

Я думал о какой-то проверке против точки, а границы ребенка фигурируют, но он должен быть довольно быстрым, а его использование - питоном.

ответ

0

Два решения, которые могут сделать трюк.

Отдельные коллайдеров

Во-первых, отделить коллайдеров и дать каждому другой объект, а затем связать объекты программно и переместить их рядом друг с другом. Таким образом, не будет compound collider.


Итерационный столкновение

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

+0

Как проголосовали? (wtf?) – BluePrintRandom

+0

@BluePrintRandom Я не знаю, я фактически проголосовал за вас. – j4hangir

0

unparent все части, отлитый луч -> найти, кто был поражен -> Reparent все части кажется, что единственное решение, но я не знаю, как дорого это будет **

или построить дерево BVH при сборке , где лица индексируются объектам ..... get hit face-> проверить индекс вершины, чтобы получить hitObject .....?

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

  • Нет связанных вопросов^_^