forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   MeshIntersect (http://forum.boolean.name/showthread.php?t=19815)

ILonion 27.04.2015 18:07

MeshIntersect
 
Доброго времени!
Снова я с вопросами.
Подскажите как можно в юнити на C# реализовать блитцевский MeshIntersect:
http://www.blitzbasic.co.nz/b3ddocs/...t&ref=comments

?

seaman 27.04.2015 18:56

Ответ: MeshIntersect
 
OnColliderEnter + MeshCollider

ILonion 28.04.2015 13:34

Ответ: MeshIntersect
 
Спасибо, seaman!

ILonion 02.05.2015 00:40

Ответ: MeshIntersect
 
Каким либо образом можно сделать return bool при проверке события столкновения?
OnColliderEnter и подобные ему не подходят.
Необходимо из пользовательского метода проверять событие столкновения и возвращать false\true.
Можно это как-то реализовать в юнити?

ILonion 02.05.2015 01:50

Ответ: MeshIntersect
 
Нашел: http://docs.unity3d.com/ScriptRefere...eckSphere.html
Не актуально.

seaman 02.05.2015 18:39

Ответ: MeshIntersect
 
Цитата:

Сообщение от ILonion (Сообщение 295492)
Каким либо образом можно сделать return bool при проверке события столкновения?
OnColliderEnter и подобные ему не подходят.
Необходимо из пользовательского метода проверять событие столкновения и возвращать false\true.
Можно это как-то реализовать в юнити?

Событие не обязательно совпадет по времени с Вашей проверкой. Поэтому проверять событие - это неверно. Нужно проверять некий флаг, который устанавливается при возникновении события. Типа:
Код:

bool flag;
void OnColliderEnter(Collider c)
{
  flag = true;
}
void MyFunc()
{
...
  if(flag) ...;
...
}


ILonion 02.05.2015 20:48

Ответ: MeshIntersect
 
Понимаю. Спасибо, seaman!
Просто у меня в методе void MyFunc() цикл, и в нем происходит передвижение объекта шажками (без рендера). в зависимости от события пересечения цикл должен прерваться и т.д.
Совсем линейная логика.

seaman 02.05.2015 23:40

Ответ: MeshIntersect
 
Вот у меня чувство, что что-то у Вас не то в архитектуре.
Вы уверены, что Ваш цикл закончится за кадр? Вы уверены, что тем самым Вы не повесите рендер и все вызовы Юнити? Зачем Вам вообще что-то двигать "шажками", если это никто не увидит?
Вам я так понимаю просто нужно поставить объект в крайнюю точку перед коллизией? Почему бы просто ее не рассчитать, без "перемещения" в цикле? Тем более, что Вам подходит коллизия со сферой.
Как?
Пускаем луч из текущего положения в направлении движения. Получаем точку коллизии. Отступаем по оси движения назад на нужное расстояние. Ставим там объект.

ILonion 03.05.2015 14:52

Ответ: MeshIntersect
 
Вы совершенно правы. Однако, мне эта штука нужна для сервисного скрипта, который создает базу данных формы 3д объекта в дискретном пространстве. Ни цикл, ни этот расчет никто видеть не должен.

Однако, при проверке Physics.CheckSphere никакие шажки мне не нужны, это я упустил из виду, держа в голове блитцевский Meshintersect :)

Спасибо за помощь!


Часовой пояс GMT +4, время: 22:10.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot