controller1 предназначен для кнопок, а controllerPos1 предназначен для положения/вращения:
Код: Выделить всё
var controller1, controller2;
var controllerPos1, controllerPos2;
try
{
var session = renderer.xr.getSession(), i = 0;
if (session)
for (var source of session.inputSources)
if (source && source.gamepad && source.handedness)
switch (source.handedness)
{
case "left":
controller1 = source.gamepad; // left controller for buttons
controllerPos1 = renderer.xr.getController(i++); // controller with index 0 but not guaranteed to be left
break;
case "right":
controller2 = source.gamepad; // right controller for buttons
controllerPos2 = renderer.xr.getController(i++); // controller with index 1 but not guaranteed to be right
break;
}
}
catch (error) { console.error(error.stack); }
У меня два вопроса:
- Во время выполнения объекты перестают работать, и мне нужно снова запустить приведенный выше код. Я не знаю, когда это происходит и почему (вероятно, из-за сборки мусора). Я поддерживаю ссылки во время выполнения, они все еще определены и не равны нулю. Но они перестают обновляться. Есть ли способ сохранить их лучше?
- Мне нужно, чтобы var ControllerPos1 = ??? ВСЕГДА был левым контроллером. Есть ли способ проверить, какой контроллер он представляет? Индекс 0 может быть левым или правым, а индекс 1 может быть правым или левым. Он переключается случайным образом во время выполнения (возможно, из-за Q1).
Подробнее здесь: https://stackoverflow.com/questions/797 ... n-three-js
Мобильная версия