Если вы следили за последними тенденциями в разработке игр, вы не могли бы пропустить недавнюю ажиотаж (заслуженно, на мой взгляд) вокруг приложений VR и AR. Мы также подробно говорили об установке и использовании гарнитуры HTC Vive VR на вашем Mac под управлением MacOS High Sierra.

С помощью комплекта разработки eGPU, предлагаемого Apple, или новейшего iMac Pro с мощным графическим процессором AMD Radeon Vega, вы можете создавать и запускать приложения VR непосредственно на подключенной гарнитуре HTC Vive VR. Вот часть 2 о том, как создать и запустить простое приложение VR на MacOS и HTC Vive! Посмотрите на часть 1, чтобы получить скорость!

Это руководство было написано после видео-урока, предоставленного VRGameDev, поэтому обязательно ознакомьтесь с его каналом!

Как сделать руки

Для простоты «руки» в нашем приложении будут двумя простыми сферами, но они смогут использовать триггерные кнопки на контроллере HTC Vive для захвата куба.

  1. В разделе Иерархия снова выберите Создать> 3D объект> Сфера.
  2. Выбрать сфера.
  3. В разделе «Преобразование» измените масштаб на X = 0,1, Y = 0,1 и Z = 0,1.
  4. Оставьте позицию в X = 0, Y = 0 и Z = 0.
  5. Выберите Сферу под Иерархией и переименуйте ее в Левая рука.
  6. Option-Click LeftHand и выберите дублировать.
  7. Переименуйте дубликат на ** RightHand.
  8. Выберите оба LeftHand и RightHand.

  9. Под Sphere Collider щелкните снаряжение и Удалить компонент (мы не хотим, чтобы наши руки сталкивались друг с другом в виртуальной реальности).

Как скопировать код C #

Поскольку изучение C # или других языков программирования выходит за рамки этой статьи, мы можем импортировать код, чтобы сообщить нашему приложению, что делать с контроллерами ввода HTC Vive. Вы можете скопировать код здесь в простой текстовый редактор (я использую vi), сохранить его как HandGabbing.cs и, наконец, объединить его с вашим приложением VR.

использование System.Collections;
using System.Collections.Generic;
используя UnityEngine;
используя UnityEngine.XR; // должен быть UnityEngine.VR в версии до 2017.2

публичный класс HandGrabbing: MonoBehaviour
{

открытая строка InputName;
public XRNode NodeType;
public Vector3 ObjectGrabOffset;
публичное плавание GrabDistance = 0.1f;
public string GrabTag = "Grab";
public float ThrowMultiplier = 1.5f;
приватное преобразование _currentObject;
приватный Vector3 _lastFramePosition;
// Используем это для инициализации
void Start ()
{
_currentObject = null;
_lastFramePosition = transform.position;
}
// Обновление вызывается один раз за кадр
void Update ()
{
// обновляем положение и поворот руки
transform.localPosition = InputTracking.GetLocalPosition (NodeType);
transform.localRotation = InputTracking.GetLocalRotation (NodeType);
// если у нас нет активного объекта, посмотрите, есть ли он рядом
if (_currentObject == null)
{
// проверка на наличие коллайдеров
Collider [] colliders = Physics.OverlapSphere (transform.position, GrabDistance);
if (colliders.Length> 0)
{
// если есть коллайдеры, возьмите первый, если мы нажмем кнопку захвата, и у него есть тег для захвата
if (Input.GetAxis (InputName)> = 0.01f  коллайдерам [0] .transform.CompareTag (GrabTag))
{
// установить текущий объект на объект, который мы выбрали
_currentObject = colliders [0] .transform;
// если к прикрепленному объекту нет твердого тела, добавьте его
if (_currentObject.GetComponent () == null)
{
_currentObject.gameObject.AddComponent ();
}
// установить кинематический объект захвата (отключить физику)
_currentObject.GetComponent (). isKinematic = true;
}
}
}
еще
// у нас есть объект в руке, обновляем его позицию текущей позицией руки (+ определенное смещение от него)
{
_currentObject.position = transform.position + ObjectGrabOffset;
// если мы отпустим кнопку захвата, освободим текущий объект
if (Input.GetAxis (InputName) < 0.01f)
{
//set grab object to non-kinematic (enable physics)
Rigidbody _objectRGB = _currentObject.GetComponent();
_objectRGB.isKinematic = false;
//calculate the hand's current velocity
Vector3 CurrentVelocity = (transform.position - _lastFramePosition) / Time.deltaTime;
//set the grabbed object's velocity to the current velocity of the hand
_objectRGB.velocity = CurrentVelocity * ThrowMultiplier;
//release the reference
_currentObject = null;
}
}
//save the current position for calculation of velocity in next frame
_lastFramePosition = transform.position;
}

}

Как соотнести руки с устройством ввода

  1. В верхней строке меню нажмите Правка> Настройки проекта> Ввод.
  2. Под InputManager Option-Нажмите горизонтальный.
  3. Выбрать Дублирующий элемент массива.
  4. Переименуйте новый элемент в TiggerLeft.
  5. Установить тип на Ось джойстика.
  6. Установите Ось на 11-я ось (джойстики).
  7. Вариант-Click TriggerLeft.
  8. Выбрать Дублирующий элемент массива.
  9. Переименуйте новый элемент в TiggerRight.
  10. Установите Ось на 12-я ось (джойстики).
  11. Option-щелкните пустое пространство под активы.
  12. Выбрать Импортировать новый актив.
  13. Выберите HandGrabbing.cs файл, который вы скачали ранее.
  14. Нажмите Импортировать.
  15. Выберите оба LeftHand и RightHand под иерархией.
  16. Перетащите сценарий HandGrabbing.cs на Инспектор окно.

  17. Выберите LeftHand под Иерархия и измените имя входа на TriggerLeft.
  18. Выбрать Левая рука под типом узла.
  19. Выберите RightHand под Hierarchy и измените имя входа на TriggerRight.
  20. Выбрать Правая рука под типом узла.

Как сделать куб интерактивным

Наконец, давайте применим взаимодействие с кубом.

  1. Выберите куб под иерархией.
  2. Под Инспектором нажмите падать рядом с тегом.
  3. Выбрать Добавить метку.
  4. Нажмите на +.
  5. Назовите тег грейфер.
  6. Нажмите Птичий куб под Иерархия.
  7. Нажмите Тег.
  8. Выбрать грейфер.

Как создать и играть в приложение для виртуальной реальности

Когда все на месте, вы можете нажать кнопку Play и запустить приложение VR в реальном времени.

  1. нажмите Играть треугольник.
  2. Выберите разрешение экрана, которое будет работать на HTC Vive (например, 1650 x 1050).
  3. Нажмите Играть!.

Ваше приложение SteamVR должно запуститься, и теперь вы сможете использовать свое приложение в VR. Вы можете взять свой куб и отбросить его на некоторое расстояние! Поздравляем! Вы создали свое первое приложение VR !.

Последние мысли

Это всего лишь пример того, как создать приложение для виртуальной реальности. Надеюсь, у вас будет соблазн сделать это полноценной едой. Игровые движки, такие как Unity и Unreal, позволяют начинающим разработчикам игр быть в курсе событий и начинать создавать удивительные VR-игры. Чего же ты ждешь?! Расскажите нам, что вы будете разрабатывать в VR на MacOS?

Оцените статью!