forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Физика (http://forum.boolean.name/forumdisplay.php?f=168)
-   -   Raycast в Editr'е без коллайдеров (http://forum.boolean.name/showthread.php?t=20315)

ABTOMAT 13.06.2016 20:46

Raycast в Editr'е без коллайдеров
 
Известно, что в редакторе (и не в редакторе) можно проводить рейкаст по коллайдерам.

А что если встала задача сделать рейкаст по объектам, у которых нет коллайдера?

И который им в игре не нужен, следвательно, создавать его нет смысла.

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

Пример: кликнули мышкой по стене, появился настенный фонарь.

Может быть, есть какие-то функции для этого, доступные только в редакторе?
Пример: https://docs.unity3d.com/ScriptRefer...setAtPath.html
Загружает ассеты в сцену откуда угодно, а не только из Resources. Доступно только в редакторе.

Может, есть что-то подобное и для рейкаста без коллайдеров? В конце концов юнити же сам по клику мышкой выделяет объекты, есть на нём коллайдеры или нет?

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

Nex 13.06.2016 22:36

Ответ: Raycast в Editr'е без коллайдеров
 
Похоже что в юнити такое не возможно. Вот что удалось найти из подходящего (в сообщении №3 семпл).
http://forum.unity3d.com/threads/ray...lliders.14378/

Антихрист 13.06.2016 23:39

Ответ: Raycast в Editr'е без коллайдеров
 
Сомневаюсь,что есть возможность сделать это без коллаидеров.
Вижу еще один дебильный вариант использовать Selection для CustomEditor, выбрал стенку и клацаешь по ней, думаю вполне понятно какие минусы у этого варианта.

Код:

void OnSceneGUI()
    {
        if (Event.current.type == EventType.MouseDown)
        {     
            Vector3 firstStep = Camera.current.ScreenToWorldPoint(new Vector3(Event.current.mousePosition.x, Event.current.mousePosition.y, 10));
            Vector3 secondStep = new Vector3(firstStep.x, firstStep.y, Selection.activeTransform.position.z);
            Debug.Log("Hit Point=" + secondStep);
        }
    }

К Selection.activeTransform.position.z еще +- половину ширины объекта по Z чтобы получить точку на поверхности стены.

RegIon 13.06.2016 23:40

Ответ: Raycast в Editr'е без коллайдеров
 
Проще поставить коллайдер, а при старте снести, когда он не нужен. А в редакторе пусть торчит.
Все рейкасты и клики обрабатывает Physix, так что без этого никак. Тебе же еще наверное нормаль и позицию касания нужно, не просто выбрать

pax 14.06.2016 07:15

Ответ: Raycast в Editr'е без коллайдеров
 
Цитата:

Сообщение от RegIon (Сообщение 306398)
А в редакторе пусть торчит.

Думаю можно так же снести при билде, чтобы в готовой игре ничего не удалять при старте. Допустим на объекте будет колайдер и скрипт, его удаляющий при старте с названием "RemoveColliderOnStart". Тогда можно найти все объекты с этим скриптом, выполнить его метод Start и удалить сами скрипты вот в такой вот функции: http://docs.unity3d.com/ScriptRefere...Attribute.html

Mimi Neko 06.02.2017 03:49

Ответ: Raycast в Editr'е без коллайдеров
 
В юнити редакторе же есть возможность и без коллайдера, ловить нажатие мышки, на объектах сцены!

Mimi Neko 06.02.2017 03:55

Ответ: Raycast в Editr'е без коллайдеров
 
Цитата:

Сообщение от RegIon (Сообщение 306398)
Все рейкасты и клики обрабатывает Physix, так что без этого никак

Physix - это не та самая физика, которая позволяет реально что-то нащупать. Это лишь имитация физики, реализуемая всё теми же математическими и геометрическими методами.

RegIon 06.02.2017 06:32

Ответ: Raycast в Editr'е без коллайдеров
 
Цитата:

Сообщение от Mimi Neko (Сообщение 311718)
В юнити редакторе же есть возможность и без коллайдера, ловить нажатие мышки, на объектах сцены!

Нет. Кроме встроенного селектора без API

Mimi Neko 06.02.2017 15:48

Ответ: Raycast в Editr'е без коллайдеров
 
Цитата:

Сообщение от RegIon (Сообщение 311720)
Нет. Кроме встроенного селектора без API

- Ды ну?
Всё отлично без рейкастов и встроенного селекта работает. - в умелых руках.
только тут это никому не надо... посему пример удалён.


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

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