2017-02-12 32 views
0

У меня возник вопрос о том, как показать простое 2-мерное изображение поверх обнаруженного маркера. Я следил за некоторым учебным пособием, чтобы показать 3d-модель, и она отлично работает. с 3d нет проблем. Проблема начинается, когда я хочу добавить обычный 2d object-> sprite. Когда я добавляю простой спрайт, я не могу добавить текстуру, и когда я вставляю изображение в пользовательском интерфейсе, он добавляется вместе с холстом, и он не отображается при обнаружении цели. Исходное изображение на редакторе помещается тогда, пока его трудно найти. Я был бы признателен, если кто-то может подчеркнуть меня в правильном направлении.Обнаружено единство с vuforia, показывающее изображение 2d при наведении

+0

Я не очень хорошо знаком с Unity api, но посмотрите здесь ответ, посмотрите, поможет ли он: http://stackoverflow.com/questions/27953393/unity3d-with-vuforia-showing-2d- image-when-targed-is-detected – yakobom

ответ

0

Под вашим ImageTarget вам нужно иметь что-то вроде скрипта Trackable Event Handler. По умолчанию это DefaultTrackableEventHandler.

Вы можете найти там два метода: OnTrackingFound() & OnTrackingLost(). Как видно из этих методов, эти методы включают или отключают Colliders и Renderes, поэтому нет проблем с показом 3D-моделей, когда цель обнаружена. Для показа 2D-объектов, таких как Canvas или Sprite, вам необходимо изменить эти методы и несколько строк.

Например:

private void OnTrackingFound() { 
     Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); 
     Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); 
     Canvas[] canvasComponents = GetComponentsInChildren<Canvas>(true); 

     foreach (Canvas component in canvasComponents) { 
      component.enabled = true; 
     } 

     // Enable rendering: 
     foreach (Renderer component in rendererComponents) { 
      component.enabled = true; 
     } 

     // Enable colliders: 
     foreach (Collider component in colliderComponents) { 
      component.enabled = true; 
     } 

     Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found"); 
    } 

Это помогает в моем случае.

+0

сэр, как насчет случайного слова, тогда сценарий - это когда одно слово было показано, что оно никогда больше не отображается – CSMgameclub

+0

Я не уверен, понял ли я вас сейчас. Можете ли вы объяснить, что вы подразумеваете под словом «слово»? –

+0

для случайного текстового сэра, например, когда «водород» отображается в случайном тексте, а затем, если случайный текст изменится, слово «Водород» будет включено. – CSMgameclub