Определить вход контроллера в VRTK

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

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

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

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

Например:

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


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

1 ответ

Решение

Вы могли бы использовать Grabbedметод объекта InteractableObject: https://vrtoolkit.readme.io/docs/vrtk_interactableobject

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

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

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

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
    }
  }
}
Другие вопросы по тегам