Найти коллайдеры в трапеции или треугольнике(3d)

Физика в Unity

Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение waruiyume 11 ноя 2017, 01:19

Здравствуйте, подскажите как найти коллайдеры попавшие в треугольник или трапецию?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение samana 11 ноя 2017, 13:57

А треугольник и трапеция это тоже 3d объекты? Если да, то может попробовать mesh collider нужной формы и включая/выключая его ловить пересечения через OnCollision. Но я не проверял эту идею, может и не сработает.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение waruiyume 11 ноя 2017, 20:30

Это пространство через которое что-то прошло за 1 кадр: треугольник- это свайп через перспективную камеру, а трапеция(ну почти) это взмах мечём.
Вариант с мешем мне не нравится потому, что коллизии/входы в триггер происходят только в следующем кадре, и они приходят не разом, а через событие, а потому их сначала нужно собрать, а обрабатывать после того как закончится шаг физики...
Для треугольника, пока намутил костыль из кучи OverlapBox, хорошо бы что-то более простое найти.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение Cr0c 11 ноя 2017, 21:07

A,B,C - точки треугольника, P - точка

N1 = (By-Ay)*(Px-Ax) - (Bx-Ax)*(Py-Ay);
N2 = (Cy-By)*(Px-Bx) - (Cx-Bx)*(Py-By);
N3 = (Ay-Cy)*(Px-Cx) - (Ax-Cx)*(Py-Cy);

Result = ((N1>0) and (N2>0) and (N3>0)) or ((N1<0) and (N2<0) and (N3<0));

Если в 2д, для 3д сначала определить принадлежность точки плоскости треугольника и приводить к 2д
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение waruiyume 11 ноя 2017, 21:13

Найти КОЛЛАЙДЕРЫ в трапеции или треугольнике(3d)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение Cr0c 11 ноя 2017, 21:45

Разбить вершины коллайдера по разные стороны плоскости треугольника, выбрать ближайшую с каждой стороны, точку пересечения отрезка этих точек на плоскости треугольника и попадание этой точки в треугольник. ИМХО.
Трапеция - это два треугольника.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Найти коллайдеры в трапеции или треугольнике(3d)

Сообщение waruiyume 11 ноя 2017, 23:49

Спасибо за идею!
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2