Всем привет. Я хочу сделать такую прогу: Чтобы при наведении на объект или qr метку, показывала интерфейс с данными об объекте. Делаю на unity c помощью vuforia.
И тут я застрял, как сделать так чтобы худ изначально была скрытой, а показывала только при распозновании объекта. И кнопка закрыть чтобы убрать худ.
Придется писать скрипт который будет следить за объектами под курсором. Причем если вы хотите чтобы объект сцены и UI придется писать разную реализацию. В первом случае вы проверяете через физику и коллайдеры на наличие скрипта со ссылкой на информацию которую требуется отображать, во втором проверяете наличие UI элемента с включенным RayCast Target.
Примерно вот так:
TipState GetTargetUI()
{
if (!LastObjectUI.gameObject.activeInHierarchy)
{
LastObjectUI = null;
return TipState.None;
}
return GetTarget(LastObjectUI);
}
TipState GetTargetCamera(Camera cam)
{
// create the ray on the mouse position from camera
Ray ray = cam.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (!Physics.Raycast(ray, out hit))
return TipState.None;
GameObject currentObject = hit.collider.gameObject;
return GetTarget(currentObject);
}
TipState GetTarget(GameObject fromObject)
{
if (fromObject == null) return TipState.None;
if (fromObject == LastObject) return TipState.Old;
GameObject currentObject = fromObject;
do
{
toolTip = currentObject.GetComponent<ToolTip>();
if (toolTip != null)
{
LastObject = fromObject;
TipObject = fromObject;
Show();
return TipState.New;
}
if (currentObject.transform.parent != null)
currentObject = currentObject.transform.parent.gameObject;
else
currentObject = null;
} while (currentObject != null);
return TipState.None;
}
public void OnEnter(BaseEventData data)
{
PointerEventData pData = data as PointerEventData;
if (pData != null && pData.pointerCurrentRaycast.gameObject)
{
LastObjectUI = pData.pointerCurrentRaycast.gameObject;
}
}
public void OnExit(BaseEventData data)
{
PointerEventData pData = data as PointerEventData;
if (pData != null && pData.pointerEnter)
{
LastObjectUI = null;
Hide();
}
}
Это выжимка из большого скрипта, который ищет под указателем объект. Приходится проверять какой объект был до этого под указателем, есть небольшая машина состояний чтобы отрабатывать логику показа подсказки и т.д. и т.п.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня 2 фрагмента в viewpagerВо фрагментах recycleview
Я новичок вsh, но я понял, что нет возможности возвращать значение таким образом, как в Java
Я вот не сильно разбираюсь в шифрованииЕсли у кого то есть предположения, как мне помочь, говорите))