Определить вход контроллера в 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
}
}
}