2016-03-21 3 views
1

Я пытаюсь создать приложение, которое реагирует на флаг Cardboard.SDK.Tilted в некотором методе Update().Google Cardboard Unity SDK Наклон не работает на устройстве

При запуске в Unity Player, нажав кнопку Esc, Cardboard.SDK.Tilted установлен в значение true, так что здесь все хорошо. Но когда я создаю приложение для Android, Cardboard.SDK.Tilted остается ложным, если я наклоняю устройство. Другие приложения VR с настройками наклона отлично работают на моем телефоне. Есть ли еще один вариант, который я должен включить, прежде чем строить для Android, чтобы сделать эту работу?

Я использую Unity v5.3.3f1 и v0.6 Картонная SDK, устройства, которые я пробовал на это Xperia Z2, Samsung Galaxy S3 и iPhone 6.

EDIT: Итак, я ве попытался положить этот код в оба Update() и LateUpdate() методы:

if (Cardboard.SDK.Tilted) { 
      print("tilted, next scene"); 
      NextScene(); 
} 

Когда экран наклонен, новая сцена должна быть загружена. Но, как я уже сказал, он работает только в Unity Player, нажав кнопку Esc, чтобы вызвать наклон, на реальном устройстве ничего не происходит - переменная Cardboard.SDK.Tilted никогда не устанавливается в true.

Я видел на https://recordnotfound.com/cardboard-unity-googlesamples-6780/issues, что была проблема отмены Tilt в v0.6, возможно ли, что это больше не поддерживается? Но странно, что он работает в Unity Player, но не на реальном устройстве.

ответ

1

Я могу проверить, что флаг Cardboard.SDK.Tilted не работает, как в предыдущих версиях SDK. Кнопка escape запускает его в отладчике, но действие наклон не запускает его в сборках.

Однако, вы можете реализовать эквивалент довольно просто с Input.acceleration:

float angle = 80.0f/360.0f * 2.0f * Mathf.PI; 
bool isTilted = Mathf.Abs(Input.acceleration.normalized.x) > Mathf.Sin(angle); 
if (Cardboard.SDK.Tilted || isTilted) 
{ 
    //Action here 
} 

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

Смежные вопросы