Страница 1 из 1

Canvas на движущемся объекте

СообщениеДобавлено: 18 сен 2018, 23:27
ASDev
Делаю игру от первого лица. Пытаюсь сделать планшет в руке игрока. На котором кнопки интерфейса. Я делаю Canvas дочерним объектом планшета чуть выше экрана, делаю кнопки. Так вот, когда я двигаюсь в пространстве или двигаю руку с планшетом - кнопки как будто не жёстко привязаны трансформом, а следуют за планшетом с небольшим опозданием. Из-за этого они могут рендериться вообще за планшетом. В чём может быть проблема и как это исправить?

Re: Canvas на движущемся объекте

СообщениеДобавлено: 19 сен 2018, 05:40
Xtir
А почему бы не сделать интерфейс планшеты обычными спрайтами?

Re: Canvas на движущемся объекте

СообщениеДобавлено: 19 сен 2018, 07:42
1max1
Сделай кнопки одним большим спрайтом, а когда нужно будет клацать по ним переключай на интерактивный UI.

Re: Canvas на движущемся объекте

СообщениеДобавлено: 19 сен 2018, 21:23
ASDev
Дело в том что я пилю проект под VR, и взаимодействие с интерфейсом реализовано именно с UI. Можно конечно потратить кучу времени и попытаться сделать на спрайтах, но не хотелось бы...

Re: Canvas на движущемся объекте

СообщениеДобавлено: 19 сен 2018, 23:00
Anonymyx
Какая версия Unity3d? Вроде был такой баг, в 2018.1... версии его нету, по крайней мере у меня.

А вот и баг: https://issuetracker.unity3d.com/issues ... controller

Re: Canvas на движущемся объекте

СообщениеДобавлено: 20 сен 2018, 12:35
ASDev
Спасибо, это как раз тот же глюк что и у меня. Я подозревал что дело в апдейте позиции, буду ковырять скрипты. Версия юнити 2017,1,3. Если не поможет - на 18-ю перейду

Re: Canvas на движущемся объекте

СообщениеДобавлено: 20 сен 2018, 16:01
ASDev
Спасибо за наводку, помог один из комментариев

JUL 13, 2017 15:05
I found a workaround:
The position and rotation of the controllers is updated in the Script "SteamVR_TrackedObject.cs" in the method OnNewPoses().
This Skript I modified like this: Instead of setting the position and rotation in OnNewPoses() i store the information in variables.
Then i add the Unity Update() functions and do the setting there.
I Do it in Update(), LateUpdate() and FixedUpdate() because otherwise it seamed not fluend, but that could easily caused by my vive rig setup and not the code.

Перенёс изменение позиции из функции OnNewPoses() в Update() и всё заработало как надо