2

Я работаю над проектом Google Cardboard, сейчас у меня есть демо для Android, где можно посмотреть вокруг в специальной сцене, которую я создаю в UNITY 3D, все работает отлично & выглядит хорошо, но что я действительно хочу:Сценарий магнита для UNITY 3D

Я хочу идти вперед, когда я нажимаю кнопку магнита Google Cardboard.

Я нашел несколько скриптов в Интернете, но я не знаю, как заставить эти скрипты работать в моем проекте UNITY.

Может ли кто-нибудь помочь мне в дальнейшем?

+0

CaseyB Пользователь на GitHub написал утилиту для этого, который использует событие Unity в системы- https://github.com/CaseyB/UnityCardboardTrigger/tree/develop С помощью этого скрипта на объекте, событие OnCardboardTrigger() будет работать на другие скрипты, прикрепленные к одному и тому же объекту при нажатии кнопки – Agumander

+0

Эй, Агумандер, спасибо вам за ответ! :) Если я поместил скрипт в свой FirstPersonController, что мне делать, чтобы заставить контроллер двигаться? –

+0

Поместите функцию в свой скрипт под названием 'OnCardboardTrigger()', и внутри этой функции вы поместите свое управление движением. Насколько я могу судить, эта функция срабатывает для каждого кадра, на котором вы нажимаете кнопку, так что управление движением может быть таким простым, как 'transform.position + = transform.forward * Time.deltaTime * speed;' – Agumander

ответ

2

Предполагая, что вы можете правильно прочитать вход магнита. Так я сделал сценарий контроллера стиля FPS:

  1. В Unity5 импортируйте пакет активов Стандартные активы/символы.
  2. Создайте экземпляр RigidBodyFPSController.prefab из этого пакета.
  3. Удалить его детский объект, «MainCamera»
  4. Импортировать Google cardboard unitypackage.
  5. Замените «MainCamera», который вы удалили на шаге №3 с помощью CardboardMain.prefab
  6. Обновите или измените копию метода RigidbodyFirstPersonController.cs GetInput().

GetInput() с Google картонно движение вперед запасного варианта:

private Vector2 GetInput() 
{ 
    Vector2 input = new Vector2 
    { 
     x = Input.GetAxis("Horizontal"), 
     y = Input.GetAxis("Vertical") 
    }; 

    // If GetAxis are empty, try alternate input methods. 
    if (Math.Abs(input.x) + Math.Abs(input.y) < 2 * float.Epsilon) 
    { 
     if (IsMoving) //IsMoving is the flag for forward movement. This is the bool that would be toggled by a click of the Google cardboard magnet 
     { 
      input = new Vector2(0, 1); // go straight forward by setting positive Vertical 
     } 
    } 
    movementSettings.UpdateDesiredTargetSpeed(input); 
    return input; 
} 

компании Google SDK только поддержка обнаружения-х магнит "нажмите кнопку". Если вы хотите удерживать магнит для перемещения вперед, я рекомендую использовать Cardboard Controls+ из Unity3D Asset Store.

+0

У меня нет флага IsMoving.Говорит, что он не существует в текущем контексте –

+0

В строке кода IsMoving указано выше, есть комментарий к коду. Этот комментарий используется для объяснения этой строки кода. В этом случае, что бы установить значение IsMoving. Там, где вы имеете дело с IsMoving, вы можете добавить «public bool IsMoving;» поверх блока кода выше. – ShawnFeatherly

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