Обнаружить ввод контроллера в VRTK

Я новичок в этом, поэтому извините, если я пишу не в том месте - дайте мне знать, и я перенесу/удалю этот комментарий.

В настоящее время у меня возникают проблемы с обнаружением ввода контроллера при использовании VRTK.

Например, когда у меня происходит столкновение между двумя объектами, я хочу иметь возможность определять, какие кнопки нажимаются на контроллерах, но не могу понять, как это сделать.

Кроме того, я реализовал функциональность Interact Use, но я изо всех сил пытаюсь понять, как заставить две кнопки выполнять разные действия.

Например:

как только я хватаю объект с помощью простого указателя, я хочу, чтобы одна кнопка приближала объект, а другая - удаляла его, но мне удалось реализовать только одно или другое.


Какие-либо предложения? Я искал везде в документах, примерах и Google и ничего не нашел. Любая помощь приветствуется! Таскаю мои волосы здесь!


person Phil Mennie    schedule 31.01.2017    source источник
comment
Добро пожаловать в Stack Overflow! Пожалуйста, отредактируйте свой вопрос, чтобы показать что вы уже пробовали. Вы должны включить минимально воспроизводимый пример кода, с которым у вас возникли проблемы, тогда мы можем попытаться помочь с конкретная проблема. Вы также должны прочитать Как спросить.   -  person Toby Speight    schedule 31.01.2017


Ответы (1)


Вы можете использовать Grabbedmethod для InteractableObject: https://vrtoolkit.readme.io/docs/vrtk_interactableobject#section-grabbed-1

Или вы можете использовать событие ControllerGrabInteractableObject в сценарии InteractGrab: https://vrtoolkit.readme.io/docs/vrtk_interactgrab#section-class-events

Или у вас может быть процедура обновления и проверка состояния grabbed на контроллере, выполняющем GetGrabbedObject() != null (который проверяет, есть ли у контроллера захваченный объект, если он нулевой, то он не захвачен).

Затем вы можете использовать логические кнопки ControllerEvents, чтобы сделать что-то при нажатии кнопки. Таким образом, скрипт с этим находится в псевдониме игрового объекта сценария контроллера рядом со сценарием захвата взаимодействия:

void Update() {
  if (GetComponent<VRTK_InteractGrab>().GetGrabbedObject != null) {
    var controllerEvents = GetComponent<VRTK_ControllerEvents>();
    if (controllerEvents.IsButtonPressed(VRTK_ControllerEvents.ButtonAlias.Trigger_Press) {
        //Do something on trigger press
    }

    if (controllerEvents.IsButtonPressed(VRTK_ControllerEvents.ButtonAlias.Grip_Press) {
        //Do something on grip press
    }
  }
}
person TheStoneFox    schedule 01.02.2017