Использование виртуальной кнопки для управления поведением нескольких объектов изображения - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь создать дорожку с двумя объектами изображения для одной AR-камеры из Vuforia в Unity.Я хочу создать два объекта изображения под ним.Один из них с виртуальной кнопкой.У другого будет объект анимации.Я пытаюсь нажать виртуальную кнопку на объекте один, чтобы вызвать движение объекта два.Я могу добиться этого, если кнопка и анимация находятся в одном объекте изображения.Я не уверен, как я могу это сделать, если кнопка и анимация находятся под другим объектом изображения.Если возможно, как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Для управления gameObject от другого вам необходимо иметь связь между обоими.

MyScriptOne

MyScriptTwo

Внутри скриптов вы можете добавить общедоступную ссылку, например:

public MyScriptTwo myScriptTwo;

А затем, когдавы нажимаете кнопку в MyScriptOne, вы можете позвонить как угодно public в MyScriptTwo, как это.

myScriptTwo.TriggerAnimation ();

Тот факт, что они не активны одновременно, не означает, что они не могут бытьподключен, фактически вы должны убедиться, что анимированный объект активен, прежде чем его анимировать, так как кнопка в любом случае вызовет функцию.

0 голосов
/ 29 декабря 2018

Также имейте в виду, что поведение vuforia по умолчанию не указывает, какая цель изображения отслеживается, по умолчанию vuforia активирует только все компоненты под целью изображения.Чтобы добиться различного поведения на ваших изображениях, вы должны создать свой собственный сценарий с пользовательским поведением.Пример:

public class VuforiaCustomBehaviour: MonoBehaviour, ITrackableEventHandler
public TrackableBehaviour mTrackableBehaviour;
void Start()
{

    mTrackableBehaviour = GetComponent<TrackableBehaviour>();
    if (mTrackableBehaviour)
    {
        mTrackableBehaviour.RegisterTrackableEventHandler(this);
    }
}

public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
{
    if (newStatus == TrackableBehaviour.Status.DETECTED ||
        newStatus == TrackableBehaviour.Status.TRACKED ||
        newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
    {
        if (mTrackableBehaviour.TrackableName == "marker1")
        {
           DoSmth();
        }
    }
    else
    {
        OnTrackingLost();
    }
}

Также вы должны отключить обработчик отслеживаемых событий по умолчанию и добавить его к своей цели изображения.

0 голосов
/ 29 декабря 2018

Да.Вы можете.Я понял.Вам просто нужно найти Gameobject по имени, как это делают большинство онлайн-учебников, хотя их Gameobject находится под тем же объектом изображения.

...